在脚本中,当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