(注意,此问题也已发布在technet上)
如何在Windows中远程编辑文本文件?
我正在运行和管理多台Windows 7工作站和Windows Server 2012机器。我想能够在任何一台这些机器上远程编辑文本文件。我可以通过psexec或powershell remoting连接到这些机器。我也可以通过rdp连接,但对于工作站,除非我绝对必须,否则我不想将用户踢出。
例如,我们使用Salt管理状态配置。本地配置文件存储在C:\ salt \ conf
中。我希望能够即时编辑这些配置文件。
此问题涵盖了相同的主题,但没有一个答案特别令人满意。
其中一些可能的解决方案是:
- 远程桌面:正如我所说,我不想让用户退出他们的工作站
- 通过UNC路径编辑文件:这仅适用于共享文件,为快速编辑设置任意共享似乎不是一个好主意。
- 在所有目标计算机上安装某种ftp或ssh服务器。这肯定可以解决问题,但WinRM已经处于活动状态,是否有必要呢?我觉得在我的组织中安装和配置额外的软件将是最后的选择。
- 通过远程powershell会话使用命令行编辑器(例如vim,emacs)进行编辑。这行不通。我不明白技术细节,但powershell远程会话与ssh连接不同,不具交互性。
- 使用powershell的-replace运算符、out-file和add-content cmdlets进行编辑。这可以实现,但不像完整的文本编辑器那样功能齐全。
- 从远程获取内容,在本地进行编辑,然后再发布到远程。这个方法可行,并且可能是我找到的最好的解决方案。来自之前SO问题的代码示例:
PS C:\Users\Meredith> Invoke-Command -Session $ps -ScriptBlock {get-content c:/inetpub/myapp/web.config} > web.config
编辑 Web 配置文件:
PS C:\Users\Meredith> get-content web.config | Invoke-Command -Session $ps -ScriptBlock {set-content c:/inetpub/myapp/web.config}
我现在使用的是最后两种选项。对于非常简单的更改,我使用正则表达式替换,对于更复杂的更改,我将其复制到本地进行编辑。这两种方法都不是理想的,但它们起作用。只是感觉非常过时。
我正在考虑编写一个插件到我的首选编辑器(vim)中,以执行远程获取和保存操作,使我的工作流程更加顺畅。在尝试之前,我只想知道是否有什么遗漏或误解。
\\machine\c$\whatever
。 - briantist