如果我从solaris服务器ssh到美国服务器,ssh连接速度非常快,例如删除文件很快就会完成。
但是为什么PowerShell远程处理如此缓慢,在我进入远程会话,然后删除一个项目后,需要10秒以上才能完成。
Enter-PSSession -computerName test
remove-item 'C:\20010101.xls'
运行以下命令也需要5秒以上。
[Environment]::UserDomainName + "\" + [Environment]::UserName+" on"+[Environment]::MachineName
我使用远程处理的原因之一是远程桌面连接速度很慢,因为它必须将大量数据从服务器传输到本地。对于远程处理,我希望它只传输非常少量数据的文本,所以我希望它比远程桌面连接快得多。但事实是它也很慢。
有什么方法可以提高性能,或找出大部分时间去哪里?
答案 0 :(得分:7)
丹尼尔,
我猜你所看到的大部分时间都是由于远程PowerShell会话的启动造成的。
尝试使用Invoke-Command而不是使用Enter-PSSession。它仍然初始化一个远程PS会话,但是你没有得到所有的控制台开销。
Invoke-Command -Computer test -ScriptBlock {[Environment] :: UserDomainName +“\”+ [Environment] :: UserName +“on”+ [Environment] :: MachineName}
请记住,PowerShell和WinRM代表您做了很多事情,因为您的所有输出都被序列化为XML,然后再次重新构建到对象中。关于PowerShell的最好的事情之一,一切都是一个对象,是什么让它在通过ssh / bash / cmd等执行类似操作时变慢。这都是关于权衡。
当我正在完成我知道需要一段时间的任务时,我会尝试将它们安排为工作并转向其他事情。
- 格雷格