让Last PowerShell执行的最后例外

时间:2014-09-04 08:04:49

标签: exception powershell

我需要在屏幕/登录文件上打印一些异常。

有没有办法获取上次脚本执行产生的所有异常? 以此为例:

  • 我打开一个PowerShell窗口
  • 我赞成abc.ps1,它会引发一些错误。
  • 我现在执行xyz.ps1,它会抛出多个异常。现在我想只记录xyz.ps1中的所有异常。

如果我使用$error[0],我只会获得最后一个例外。我还需要xyz.ps1抛出的其他异常

1 个答案:

答案 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以获取您希望操作的更多属性。请注意,这只会在当前变量会话中搜索错误,因为错误在下次启动时消失。