Назад | Перейти на главную страницу

Перенаправить стандартную ошибку в переменную в PowerShell

Я хотел бы создать сценарий теста dcdiag, чтобы предупреждать меня, если он обнаружит какие-либо ошибки. Я думал, что смогу сделать это в PowerShell ...

$test = dcdiag 2>$err

На данный момент у меня нет ошибок от dcdiag, поэтому я не мог проверить это напрямую, но я написал другой сценарий PowerShell, чтобы генерировать исключение, надеясь, что я смогу протестировать этот метод с помощью этого сценария. Это не сработало с использованием описанного выше метода, поэтому я выбрал:

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

Это сработало для моего тестового примера, но я не знаю, приведет ли это к стандартной ошибке от dcdiag.

Как мне лучше всего добиться стандартного перенаправления ошибок на переменную в PowerShell, если я хотел бы использовать ее с dcdiag?

try...catch не поможет в этом случае.

Возможно, вы захотите сделать:

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