$error 变量在模块中不可用?

发布于 2024-10-23 00:48:19 字数 351 浏览 1 评论 0原文

我非常喜欢在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

救赎№ 2024-10-30 00:48:19

也许在 catch 块中使用 $_ 变量就可以了?

Maybe using the $_ variable within the catch block will do?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文