在腳本中,當command-let或其他可執行語句出錯時,是否存在try/catch類型的機制以從這些錯誤中恢復?我沒有在文檔中遇到過。Windows Powershell有Try/Catch或其他錯誤處理機制嗎?
回答
您在要處理異常的代碼之前使用Trap [exception-type] {}
塊。
+0真正的答案是在PowerShell v2及更高版本中的try/catch中,如問題的評論中所述。 I + 1d t @馬克英格拉姆,因爲我認爲這是一個不增加很多的重複。 (是的,我知道這是很久以前的事了,但是我第一次錯過了對這個問題的評論,並且這是最高的投票數) – 2012-07-02 12:34:37
這裏有人(Adam Weigert)執行try/catch /最後使用powershell。我用這個來代替內置的陷阱臺。似乎更自然。
http://weblogs.asp.net/adweigert/archive/2007/10/10/powershell-try-catch-finally-comes-to-life.aspx
我已經在我的TechNet雜誌列寫這個(technetmagazine.com,如果你有興趣)。
首先,PowerShell v2將有一個標準的Try ... Catch,這非常棒。
現有shell(v1)支持trap {}構造。這些必須在發生異常之前進行定義。此外,大多數cmdlet都需要一個-EA「STOP」參數才能生成可捕獲的異常。陷阱可以在任何範圍內定義,並會「陷入」,直到陷入困境,或者直到碰到全局(shell)範圍。
在陷阱結束時,執行Continue以返回到與陷阱相同範圍內的下一行代碼,或執行Break離開當前作用域並拋出異常。
對於'-ErrorAction「停止」+1「 – mbx 2012-02-15 16:36:02
對未來讀者的注意:PowerShell v2現在不支持Try/Catch/Finally。 – JasonMArcher 2010-01-06 23:25:17