(注意,这个问题也发布在technet https://social.technet.microsoft.com/Forums/scriptcenter/en-US/99ac267f-a235-4a67-b733-4a2581f6728e/remotely-editing-text-files-in-windows-winrmpsexecpowershellcmd?forum=ITCG)
如何在 Windows 中远程编辑文本文件?
我正在运行和管理许多 Windows 7 工作站和 Windows Server 2012 计算机。我希望能够在这些机器上远程编辑文本文件。我可以通过 psexec 或 powershell 远程处理连接到任何这些机器。我也可以通过 rdp 连接,但对于工作站,我宁愿不将用户踢掉,除非绝对必要。
例如,我们使用 Salt 管理状态配置。本地配置文件存储在C:\salt\conf
。我希望能够即时编辑这些配置文件。
这个问题 https://stackoverflow.com/questions/3432770/how-to-edit-a-file-in-powershell-remoting-session-powershell涵盖相同的主题,但没有一个答案特别令人满意。
一些可能的解决方案是:
- 远程桌面:正如我所说,我不想将用户踢出工作站
- 通过 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
编辑网络配置:
PS C:\Users\Meredith> get-content web.config | Invoke-Command -Session $ps -ScriptBlock {set-content c:/inetpub/myapp/web.config}
最后两个选项是我现在一直在使用的工作流程。正则表达式替换非常简单的更改,复制到本地并在那里进行编辑以进行更复杂的更改。两者都不理想,但它们确实有效。感觉非常老式。
我正在考虑为我选择的编辑器(vim)编写一个插件来执行远程获取和保存,以使我的工作流程更加顺畅。在尝试之前,我只想知道是否有任何我错过或误解的内容。
使用管理共享。这些是在 Windows 上默认创建的,它们采用驱动器盘符后跟$
, 像这样:\\machine\c$
A $
任何共享名都会使其“隐藏”(因为浏览时不会显示)\\machine\
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)