如何在Windows中远程编辑文本

时间:2014-11-14 14:23:00

标签: windows powershell text psexec winrm

(注意,此问题也发布在technet

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

我正在运行和管理许多Windows 7工作站和Windows Server 2012计算机。我希望能够在任何这些机器上远程编辑文本文件。我可以通过psexec或powershell远程连接到任何这些机器。我也可以通过rdp连接,但是对于工作站我宁愿不关闭用户,除非我绝对必须这样做。

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

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

一些可能的解决方案是:

  • 远程桌面:正如我所说,我宁愿不要让用户离开他们的工作站
  • 通过UNC路径编辑文件:这仅适用于共享中的文件,设置任意共享以进行快速编辑似乎是一个坏主意。
  • 在所有目标计算机上安装某种方式的ftp或ssh服务器。这肯定会有效,但是WinRM已经有效了吗?我觉得在我的组织中的所有机器上安装和配置额外的软件将是最后的手段。
  • 通过远程PowerShell会话使用命令行编辑器(例如vim,emacs)进行编辑。这不起作用。我不了解技术细节,但是PowerShell远程会话的交互方式与ssh连接的方式不同。
  • 使用PowerShell' s -replace运算符,out-file和add-content cmdlet进行编辑。这有效,但与全功能文本编辑器几乎不相同。
  • 从远程检索内容,在本地编辑,然后回发到远程。这是有效的,可以说是我发现的最佳解决方案。来自之前SO问题的代码示例:
PS C:\Users\Meredith> Invoke-Command -Session $ps -ScriptBlock {get-content c:/inetpub/myapp/web.config} > web.config

编辑网络配置:

PS C:\Users\Meredith> get-content web.config | Invoke-Command -Session $ps -ScriptBlock {set-content c:/inetpub/myapp/web.config}

最后两个选项是我目前使用的工作流程。正则表达式替换非常简单的更改,并复制到本地和编辑那里更复杂的。两者都不理想,但它们都有效。它只是感觉非常古老。

我正在考虑将一个插件写入我选择的编辑器(vim)来执行远程提取和保存,以使我的工作流程更加顺畅。在我尝试之前,我只是想知道是否有任何我错过或误解的内容。

1 个答案:

答案 0 :(得分:4)

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

任何共享名称中的$都会使其隐藏" (因为它在浏览\\machine\时不会出现。)