Redirecionar erro padrão para uma variável no PowerShell

16

Gostaria de fazer um script de um teste do dcdiag para me alertar se encontrar algum erro. Eu pensei que poderia fazer isso no PowerShell ...

$test = dcdiag 2>$err

Eu não tenho nenhum erro de dcdiag no momento, então não pude testar isso diretamente, mas eu escrevi outro script do PowerShell para lançar uma exceção, esperando poder testar esse método usando esse script. Isso não funcionou usando o método acima, então optei por:

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

Funcionou para o meu caso de teste, mas não sei se isso vai pegar o erro padrão do dcdiag.

Como devo obter melhor redirecionamento de erro padrão para uma variável no PowerShell, pois gostaria de usá-lo com o dcdiag?

    
por Ablue 14.12.2011 / 02:31

1 resposta

17

try...catch não ajudaria neste caso.

Você pode querer fazer:

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

Tags