我正在代表嘗試將PowerShell與我們的某個產品結合使用的其他人調查問題。我們的產品可以執行一個命令來執行操作,大多數民間直接調用一個.exe,它工作正常。一個用戶雖然調用一些PowerShell中,用這種方法:powershell:exit並不真正退出
powershell -version 2.0 -NonInteractive -ExecutionPolicy ByPass -file ($ScriptsFolder)p4_commit.ps1 {"($Message)" ($Files)}
會發生什麼事是,它雖然從來沒有退出,所以我們的軟件坐着永遠等待。腳本以一個簡單的'exit 0'結束,並且之前的行是一個調試輸出,如果我們從外部取消該過程,則會顯示該調試輸出,所以它會到達腳本結束處(如果沒有,則腳本運行正常)。
如果我刪除exit命令,並用PowerShell會話殺替換:
Stop-Process -Id $PID
然後它終止,但當然,退出代碼不是0,我們回滾所做的更改,所以它不是一個合適的解決方法。
否則,回到'退出0'我可以看到powershell.exe與參數發送仍然出現在任務管理器中;所以這並不是說它會退出,我們不會選擇它,它只是不會退出。
唉,我不是一個powershell高手 - 所以問題歸結爲「什麼會停止退出退出?」
嗯,採用啓動/等待的描述在這裏] [1]似乎幫助... [1]:HTTP://計算器。 com/questions/2041799/powershell-script-gets-stuck-doesnt-exit-when-called-from-batch-file – James 2013-02-14 12:34:56
我想你永遠不會到達腳本的末尾。通過設計調用powershell.exe -file ...將在腳本執行結束時自動關閉,除非您明確指定-noexit – 2013-02-14 13:14:51