我需要在屏幕/登录文件上打印一些异常。
有没有办法获取上次脚本执行产生的所有异常? 以此为例:
如果我使用$error[0]
,我只会获得最后一个例外。我还需要xyz.ps1抛出的其他异常
答案 0 :(得分:0)
我想我已经想出了这样做的方法。如果使用Get-Member
cmdlet($error[0] | Get-Member
)检查$ error [0]的属性,则应注意名为ScriptStackTrace
的属性。此属性告诉我们是从脚本还是从控制台引发错误。通过以下代码,我成功实现了您的要求:
for ($i=0;$i -lt $error.Count; $i++)
{ if ($Error[$i].ScriptStackTrace -match "xyz.ps1")
{ $error[$i] | out-file -Append "ErrorsScriptXYZ.txt" } }
如果您打算以可调用的方式使用该脚本,请将其添加为最后一行。请注意,它不会捕获脚本运行之前可能发生的终止错误。浏览Get-Member
cmdlet以获取您希望操作的更多属性。请注意,这只会在当前变量会话中搜索错误,因为错误在下次启动时消失。