在 PowerShell 中将标准错误重定向到变量

在 PowerShell 中将标准错误重定向到变量

我想编写一个 dcdiag 测试脚本,以便在发现任何错误时提醒我。我想我可以通过以下方式在 PowerShell 中做到这一点...

$test = dcdiag 2>$err

目前我没有收到来自 dcdiag 的任何错误,因此无法直接测试,但我编写了另一个 PowerShell 脚本来抛出异常,希望可以使用该脚本测试此方法。使用上述方法不起作用,因此我选择了:

try {
    $test = dcdiag
}
catch { 
    $err = $_.Exception.Message
}

它对我的测试用例有用,但我不知道它是否会从 dcdiag 中获取标准错误。

如果我想将标准错误重定向到 PowerShell 中的变量,并且想将其与 dcdiag 一起使用,我应该如何最好地实现它?

答案1

try...catch在这种情况下不会有帮助。

你可能想要这样做:

$test = dcdiag 2>&1
$err = $test | ?{$_.gettype().Name -eq "ErrorRecord"}
if($err){
    # Error has occurred
}

相关内容