将任何类型的错误捕获到变量

时间:2016-07-13 13:45:53

标签: powershell powershell-v2.0 powershell-v3.0

我正在尝试为PowerShell脚本开发自己的错误处理系统。我想强制两个基本原则:

  1. 如果在脚本运行时检测到任何错误 - 控制台上没有任何红色文本=错误消息。
  2. 同时,任何错误都必须作为文本存储到它自己的变量中以供进一步分析。
  3. 我不能说我不知道​​该怎么做。例如,对于非终止错误,我可以使用流重定向:

    $e1=Write-Error "UUU" 2>&1
    $e2=Get-Process none_null 2>&1
    

    对于终止错误,我可以使用try / catch:

    try{7/0} catch{$e3=$_.Exception.Message}
    

    我不知道的是 - 如何开发一个通用代码模式,它可以同样处理任何类型的错误。带有重定向的模式(e1 / e2)不能用于终止错误,try / catch没有捕获到非终止错误。我现在唯一的想法是将变量 $ ErrorActionPreference 设置为值停止。换句话说 - 将任何错误作为终止类型,然后坚持尝试/捕获模式。

    这是我的方案中唯一的方法吗?你有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

您在寻找$Error吗?

  

<强> $Error
  包含表示最新错误的错误对象数组。最近的错误是数组中的第一个错误对象($Error[0])。