Powershell远程DIR命令输出到远程服务器

时间:2011-11-14 19:01:02

标签: powershell powershell-remoting

我不明白出了什么问题。如果我在命令提示符下运行此命令

dir /S/B | findstr "test" > \\server-name\c$\results.txt

工作正常。但是,如果我尝试通过远程计算机上的powershell运行它

$result = ([WmiClass]"\\$s\ROOT\CIMV2:Win32_Process").create("cmd /c dir /S/B | findstr ""test"" > \\server-name\c$\results.txt")

我也试过

$result = ([WmiClass]"\\$s\ROOT\CIMV2:Win32_Process").create("cmd /c dir /S/B | findstr ""test"" > \\192.168.1.100\c$\results.txt")

我尝试创建了一个日志文件夹并将其与所有人完全控制共享

$result = ([WmiClass]"\\$s\ROOT\CIMV2:Win32_Process").create("cmd /c dir /S/B | findstr ""test"" > \\192.168.1.100\log\results.txt")

这些似乎都不起作用,但如果我将其更改为本地路径则可以正常工作

$result = ([WmiClass]"\\$s\ROOT\CIMV2:Win32_Process").create("cmd /c dir /S/B | findstr ""test"" > C:\results.txt")

请帮助,谢谢。

3 个答案:

答案 0 :(得分:0)

您可以在计算机上启用Psremoting,然后使用Invoke-Command cmdlet运行远程命令。我认为这更像是POSH的做法。

您也可以使用组策略在域中的许多计算机上启用它:http://blog.powershell.no/2010/03/04/enable-and-configure-windows-powershell-remoting-using-group-policy/

答案 1 :(得分:0)

在Powershell中,你应该在“”之间使用反引号`来转义“-character”。

以下命令适用于我的系统:

([WmiClass]"\\$s\ROOT\CIMV2:Win32_Process").create("cmd /c dir /S/B | findstr `"test`" > \\192.168.1.100\c$\results.txt")

答案 2 :(得分:0)

我认为我要做的就是,在命令完成后将文件从计算机移动到服务器。

    if(Test-path \\computer\c$\results.txt){
move-item -path \\computer\c$\results.txt \\server-name\c$ -force | out-host
}