【发布时间】:2015-10-05 11:17:03
【问题描述】:
我正在管理一个技术会议的实验室,并且我有一个 PowerShell 脚本,可以在会话之间进行一些清理、从桌面删除剩余的内容、重置任务栏中的链接等。当我在“本地”运行此脚本时,这意味着我在以通用实验室用户身份登录时使用快捷方式,大约需要 5 秒才能完成。但是,当我使用 Remoting 运行相同的脚本时,需要将近 10 分钟才能完成。这在一台机器上。我担心的是我有 40 台机器需要刷新,有时会话之间总共只有 15 分钟。我正在测试的代码非常简单
Invoke-Command -computerName:$machine -argumentList: $file, $context –scriptblock {
param (
[String]$file,
[string]$context
)
& powershell.exe -noProfile -noLogo -executionPolicy bypass -file $file -context:$context
} -credential:$credential -authentication:CredSSP –asJob -jobName:$machine > $null
所以,我的问题是,这是“正常”,还是有一些问题的迹象,我真的应该期望它以更接近“本地”速度工作? FWIW,我正在虚拟机上进行测试。
此外,我正在使用 BallonTip 来提醒坐在机器旁的任何人正在发生重置。这在“手动”启动脚本时效果很好。但是,当使用远程处理时,气球提示永远不会出现。当然控制台也没有,所以也许这只是Remoting的一个限制,不能触发UI?
非常感谢任何见解。谢谢!
【问题讨论】:
-
不确定为什么需要这么长时间,但我怀疑最好创建 ps1 脚本并将其复制到每个系统,然后远程执行。
-
尼克,我曾想过,但是当我“本地”运行它时,它仍在使用网络文件,所以它似乎没有什么区别。但是,我还有一些在本地复制的其他代码,所以我也会添加为此所需的资源并运行测试。谢谢!
标签: performance powershell remoting