2013-02-14 90 views
3

我正在代表嘗試將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高手 - 所以問題歸結爲「什麼會停止退出退出?」

+0

嗯,採用啓動/等待的描述在這裏] [1]似乎幫助... [1]:HTTP://計算器。 com/questions/2041799/powershell-script-gets-stuck-doesnt-exit-when-called-from-batch-file – James 2013-02-14 12:34:56

+0

我想你永遠不會到達腳本的末尾。通過設計調用powershell.exe -file ...將在腳本執行結束時自動關閉,除非您明確指定-noexit – 2013-02-14 13:14:51

回答

2

確定,確認,修改命令以啓動/等待調用powershell.exe修復它。 我不知道爲什麼(它肯定會到腳本的末尾,就像我改變了出口隨機的東西,我會得到它的錯誤)。

不過,問題就解決了......

+0

您可能會發現Gordon Smith的回答很有用:http://stackoverflow.com/questions/2041799/powershell-腳本獲取粘連 - 犯規 - 退出時,所謂的從 - 批處理文件 – John 2016-07-26 23:55:43