如何在Windows中远程编辑文本

laf*_*oyb 5 windows powershell text psexec winrm

(注意,这个问题也发布在technet上)

如何在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-Command -Session $ps -ScriptBlock {get-content c:/inetpub/myapp/web.config} > web.config
Run Code Online (Sandbox Code Playgroud)

编辑网络配置:

PS C:\Users\Meredith> get-content web.config | Invoke-Command -Session $ps -ScriptBlock {set-content c:/inetpub/myapp/web.config}
Run Code Online (Sandbox Code Playgroud)

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

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

bri*_*ist 5

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

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