5

(注意,这个问题也发布在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

编辑网页配置:

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

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

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

4

1 回答 1

5

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

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

于 2014-11-14T14:59:38.893 回答