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