Redirigir el error estándar a una variable en PowerShell

Pregunta:

Me gustaría crear un script de prueba dcdiag para alertarme si encuentra algún error. Pensé que podría hacer esto en PowerShell por …

$test = dcdiag 2>$err

No tengo ningún error de dcdiag en este momento, así que no pude probar eso directamente, pero escribí otro script de PowerShell para lanzar una excepción, esperando poder probar este método usando ese script. Esto no funcionó usando el método anterior, así que opté por:

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

Funcionó para mi caso de prueba, pero no sé si esto detectará el error estándar de dcdiag.

¿Cuál es la mejor manera de lograr la redirección de error estándar a una variable en PowerShell dado que me gustaría usarla con dcdiag?

Respuesta:

try...catch no ayudaría en este caso.

Es posible que desee hacer:

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

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım