我正在管理一个技术会议的实验室,我有一个PowerShell脚本,可以在会话之间进行一些清理,从桌面删除剩余的cruft,重置任务栏中的链接等。当我“本地”运行此脚本时,这意味着我在以普通实验室用户身份登录时使用快捷方式,大约需要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时,Ballon Tip永远不会出现。当然,控制台也没有,所以这可能只是Remoting的一个限制,没有UI可以被触发?
任何见解都非常感谢。谢谢!
答案 0 :(得分:0)
由于脚本不会在交互式用户的会话中运行,因此无法让UI显示出来。
至于表现,我不完全确定为什么会花费这么长的时间。
首先,我会尝试远程访问本地计算机(而不是仅在本地运行),方法是将localhost
,.
或实际的本地计算机名称传递给{{1 } -ComputerName
的参数。看看表现是否仍然糟糕,或者表现如何不同。
我也想知道它是否与在远程端产生另一个Invoke-Command
进程有关。理论上它不应该,但如果你这样做会怎么样:
powershell.exe