如何在Windows中远程编辑文本

5

(注意,此问题也已发布在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)中,以执行远程获取和保存操作,使我的工作流程更加顺畅。在尝试之前,我只想知道是否有什么遗漏或误解。


1
管理员共享资源怎么样?\\machine\c$\whatever - briantist
2
此外,您想要的功能在Powershell 5中,名称为“PSEdit”(http://technet.microsoft.com/en-us/library/hh857339.aspx#BKMK_newISE)。我想知道是否可以安装WMF 5预览版并使用它来编辑尚未安装WMF 5的计算机上的文件? - briantist
管理共享。谢谢。我之前不知道这个。我甚至可以在Vim中打开管理共享的文件树。这正是我想要的。你能把这作为答案添加上去吗?我会选择它的。 - laffoyb
1
PSEdit似乎在Powershell 4.0中可用。它只能从Powershell ISE打开,而不能从命令行打开,这可能是我以前没有遇到它的原因。 - laffoyb
1
你是对的,psedit在v4中可用,但在v5中它将在PSSession跨越工作(而无需使用管理员共享)。 - briantist
1个回答

5

使用管理共享。这些在Windows上默认创建,并采用驱动器字母后跟一个$的形式,例如:\\machine\c$

在任何共享名称中使用$会使其“隐藏”(即在浏览\\machine\时不会显示)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接