1
我需要在需要提升权限的几台Windows 2008服务器上完成一系列任务,因此我必须创建一系列计划任务,我正在通过psexec运行。由于它们必须按顺序运行,因此我找到并修改了一个“停顿”的powershell脚本,直到在远程计算机上完成预定任务。我遇到的问题是,当我在远程机器上使用psexec启动脚本时,一旦它完成运行(由控制台输出中的消息指示),PowerShell.exe不会干净地退出,而是挂起并保持整个处理。在延迟脚本退出后,我需要powershell退出,但即使使用退出关键字,它仍会保留在内存中,并阻止该进程完成。我并不十分PowerShell的经历,所以我会附上我的脚本的情况下,我在做一些愚蠢的事情在里面:由PSExec触发的Windows powershell脚本在运行完成时不会终止Powershell进程
while($true) {
$status = schtasks /query /tn "AutoDeploy"| select-string -patt "AutoDeploy"
if($status.tostring().substring(64,7) -eq "Running") { "Waiting for task to complete..." } else { break }
start-sleep -s 5
}
"Task complete."
exit
预先感谢任何见解。
虽然这并没有解决我的具体问题,这是一个更优雅的解决方案,我执行到位我的。 – 2010-10-25 19:29:47
我在通过SSH运行一些PowerShell脚本时遇到了一些麻烦,PowerShell在完成最后一个命令(但仅限于某些脚本)后会挂起。我通过将powershell.exe的stdin挂到nul来解决这个问题。所以有些东西等着stdin,但我不知道是什么。 – JasonMArcher 2010-10-26 03:05:48
由于远程执行powershell都在我们网络的上下文中,我可以远程查询计划任务的状态,所以我发现在本地运行脚本而不是通过psexec运行脚本会产生更加一致和可靠的输出。这效果更好,所以我猜psexec正在期待什么。 – 2010-10-26 13:12:55