如何使Powershell的行爲像Bash的標誌set -e
? set -e
製作一個Bash腳本「如果一個簡單的命令以非零狀態退出,立即退出」。Bash's set -e的Powershell模擬器
我以爲我可以通過設置$ErrorActionPreference="Stop"
來做到這一點,但這似乎不起作用。假設我有一個劇本a.ps1
$ErrorActionPreference="Stop"
& cmd /c "exit 1"
echo "cmd exited `$LastExitCode=$LastExitCode and `$?=$?"
如果我運行它
.\a. ; echo "a.ps1 exited `$LastExitCode=$LastExitCode `$?=$?"
要我的意外,打印
cmd exited $LastExitCode=1 and $?=False
a.ps1 exited $LastExitCode=1 $?=True
這是怎麼回事?我期望a.ps1在第一行後退出,拋出一個錯誤並設置$?假。
是否有任何正式文件解釋$ ErrorActionPreference?我發現的所有內容都是關於咖啡的博客上的this post。
傻瓜,這是令人沮喪的。感謝這個功能,我會使用它。 – 2012-07-12 13:54:30
該功能很好。我將'!$?'測試改爲'$ LastExitCode -ne 0',因爲'$?'壞了http://stackoverflow.com/questions/10666101/powershell-lastexitcode-0-but-false-redirecting-stderr- to-stdout-giving-nat – 2012-07-12 14:16:45
對,就是這樣。我也注意到在任何情況下,你的錯誤條件都可能需要適應;) – Joey 2012-07-12 14:54:01