在脚本中,当command-let或其他可执行语句出错时,是否有try / catch类型的机制来从这些错误中恢复?我没有在文档中遇到过一个。
答案 0 :(得分:8)
在要处理例外的代码之前使用Trap [exception-type] {}
块。
答案 1 :(得分:7)
我在TechNet杂志专栏(technetmagazine.com,如果您感兴趣的话)中写过这篇文章。
首先,PowerShell v2将有一个标准的Try ... Catch,这很棒。
现有的shell(v1)支持trap {}结构。必须在发生异常之前定义它们。此外,大多数cmdlet需要-EA“STOP”参数,以便它们生成可捕获的异常。陷阱可以在任何范围内定义,并且在被捕获之前“冒泡”或直到它们到达全局(shell)范围。
在陷阱结束时,执行Continue以返回与陷阱相同范围内的下一行代码,或执行Break以离开当前范围并抛出异常。
答案 2 :(得分:2)
这是使用powershell实现try / catch /最终的某人(Adam Weigert)。我用它代替内置的陷阱装置。似乎更自然。
http://weblogs.asp.net/adweigert/archive/2007/10/10/powershell-try-catch-finally-comes-to-life.aspx