【发布时间】:2013-04-18 20:47:53
【问题描述】:
这在 LOCALSERVER 上在 2.3 分钟内完成:
答:measure-command {$x = invoke-command {gci -recurse "C:\"}}
这在 LOCALSERVER 上在 38.4 分钟内完成:
乙:measure-command {$x = invoke-command -comp LOCALSERVER {gci -recurse "C:\"}}
为什么 B 这么慢?是因为“输出被序列化为 XML,然后再次重组为对象”,正如 here 解释的那样,使用 B 而不是 A?还是发生了其他事情?
LOCALSERVER 运行带有 PS v3 的 Windows 2008R2。在这两种情况下,$x.count 都是 98973。
我想知道如何更改现有脚本以使用 PSRemoting 在远程服务器上进行文件搜索。我认为在远程目标上运行 gci 可能会更快完成搜索。在少数测试中,使用 PSRemoting 的搜索实际上运行的时间要长得多。我询问环回方案只是因为它似乎是最简单的情况;我在远程服务器上看到了类似的结果。所以我会坚持这样的 UNC 路径搜索:
gci -recurse \\REMOTESERVER\C$\folder
...除非这些结果看起来很奇怪,并且对我的远程配置或语法进行一些调整可能会大大提升性能?
【问题讨论】:
-
我已经看到远程 ps 脚本在本地 IDE 中需要很长时间,但是当通过 powershell 命令行运行时,它们在很短的时间内完成......与线程的处理方式有关(使用 x86或 x64 IDE 改变我相信的行为)
-
没有用于这些测试的 IDE。我刚刚在原版 cmd 提示符下输入了
powershell。
标签: powershell powershell-3.0 powershell-remoting get-childitem