$error 变量在模块中不可用?
我非常喜欢在 Powershell 脚本中使用 try..catch
语句(特别是在调用外部程序/COM 对象等时),然后使用自动 $error
变量用于错误处理。
我的问题是,我发现当在模块中封装此类方法时, $error
变量不再起作用。我想这与您在模块内调用函数时实际运行的调用有关,但无论如何它都很令人恼火。这里有谁知道为什么,或者更好的是:有解决方案吗?
我确实有一个解决方法:使用 Invoke-Expression
和 -errorVariable
参数进行任何外部调用,但这相当复杂 - 并且并不总是万无一失。
I've grown very fond of using try..catch
statements in Powershell scripts (specially when calling external programs/COM objects etc), and then use the automatic $error
variable for error handling.
My problem is that I've found that when encapsualting such methods in modules, the $error
variable doesn't work anymore. I guess this has something to do with what invocation you're actually running when calling a function from within a module, but it's infuriating anyway. Does anyone here know why, or even better: have a solution?
I do have a workaround: using Invoke-Expression
with the -errorVariable
parameter for making any external calls, but this is rather complicated - and not always fool proof.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
也许在 catch 块中使用 $_ 变量就可以了?
Maybe using the $_ variable within the catch block will do?