首页 > 解决方案 > PowerShell - 如何记录完整的异常,包括所有有用的细节?

问题描述

自从我上次编写 powershell 脚本以来已经有一段时间了。我做的第一件事是在我的脚本中实现一个日志记录功能,但现在我注意到,无论我在 catch-block 中记录 $_ 还是 $_.Exception,当将日志写入文件时总是会丢失一些信息. 如何将包含行号、堆栈跟踪等所有详细信息的异常记录到文件中,而无需编写 5 行代码来手动格式化异常?在powershell中真的没有标准的方法吗?

标签: powershellexceptionlogging

解决方案


从技术上讲,它取决于异常。

每个异常都是异常类或派生类之一的实例。

这意味着所有异常都保证具有MSDN 异常文档中列出的基本属性和方法,但另外,异常可以具有自己的属性或方法。例如,ArgumentExceptionis 派生自Exception,但 is 具有可选ParamName属性。

您可以使用不同的捕获器捕获预测的异常,或者您可以使用例如 Get-Member 获取所有属性并记录它们。但是块不应该是复杂的。catch


此外,尝试使用 Start-Transcript 而不是自定义日志记录。也许这足以满足您的需求。不要忘记在将写入转录的文件夹上设置压缩标志。


推荐阅读