如何在Windows中远程编辑文本

如何在Windows中远程编辑文本,windows,powershell,text,psexec,winrm,Windows,Powershell,Text,Psexec,Winrm,(请注意,此问题也发布在) 如何在Windows中远程编辑文本文件 我正在运行和管理许多Windows 7工作站和Windows Server 2012计算机。我想能够远程编辑这些机器上的任何文本文件。我可以通过psexec或powershell远程处理连接到这些机器中的任何一台。我也可以通过rdp进行连接,但对于工作站,我宁愿不让用户离开,除非我必须这样做 例如,我们使用Salt管理状态配置。本地配置文件存储在C:\salt\conf中。我希望能够动态编辑这些配置文件 涵盖相同的主题,但没有一

(请注意,此问题也发布在)

如何在Windows中远程编辑文本文件

我正在运行和管理许多Windows 7工作站和Windows Server 2012计算机。我想能够远程编辑这些机器上的任何文本文件。我可以通过psexec或powershell远程处理连接到这些机器中的任何一台。我也可以通过rdp进行连接,但对于工作站,我宁愿不让用户离开,除非我必须这样做

例如,我们使用Salt管理状态配置。本地配置文件存储在
C:\salt\conf
中。我希望能够动态编辑这些配置文件

涵盖相同的主题,但没有一个答案特别令人满意

一些可能的解决办法是:

  • 远程桌面:正如我所说的,我不想让用户离开他们的工作站
  • 通过UNC路径编辑文件:这仅适用于共享上的文件,而设置任意共享以进行快速编辑似乎不是一个好主意
  • 在所有目标计算机上安装某种方式的ftp或ssh服务器。这当然会起作用,但WinRM已经处于活动状态时有必要这样做吗?我觉得在我组织的所有机器上安装和配置额外的软件是最后的选择
  • 通过远程powershell会话,使用命令行编辑器(例如vim、emacs)进行编辑。这不管用。我不了解技术细节,但powershell远程会话的交互方式与ssh连接不同
  • 使用powershell的-replace操作符、out-file和add-content cmdlet进行编辑。这是可行的,但与功能齐全的文本编辑器几乎不一样
  • 从远程检索内容,在本地编辑,然后发回远程。这很有效,可以说是我找到的最好的解决方案。上一个SO问题的代码示例:
PS C:\Users\Meredith>Invoke命令-Session$PS-ScriptBlock{get content C:/inetpub/myapp/web.config}>web.config
编辑web配置:

PS C:\Users\Meredith>get content web.config | Invoke命令-Session$PS-ScriptBlock{set content C:/inetpub/myapp/web.config}
最后两个选项是我目前使用的工作流。对于非常简单的更改,可以使用正则表达式替换,对于更复杂的更改,可以复制到本地并在本地进行编辑。这两种方法都不理想,但都有效。这感觉真是太过时了


我正在考虑为我的编辑器(vim)编写一个插件,以执行远程获取和保存,使我的工作流程更加顺畅。在我尝试之前,我只想知道是否有什么我遗漏或误解的地方。

使用管理共享。默认情况下,它们是在Windows上创建的,其形式为驱动器号后跟
$
,如下所示:
\\machine\c$


任何共享名中的
$
都会使其“隐藏”(因为它在浏览
\\machine\
时不会显示)。

管理共享如何
\\machine\c$\whatever
也可以在名称
PSEdit
下使用。我想知道您是否可以安装WMF 5预览版,并使用它编辑尚未在WMF 5?管理共享上的计算机上的文件。谢谢我不知道这些。我甚至可以在Vim中打开管理共享的文件树。这正是我想要的。你能把它作为一个答案,我会选择它吗?而且PSEdit似乎在Powershell 4.0中可用。它将仅从Powershell ISE打开,而不是从命令行打开,这可能是我以前没有遇到过它的原因。您是对的,psedit在v4中可用,但在v5中它将跨PSSession工作(不使用管理共享)。