2012-09-10 23 views
8

quiero hacer un intento de captura en un archivo .exe en Powershell, lo que tengo es el siguiente:¿Intenta capturar el ejecutable exe en Powershell?

Try 
{ 
    $output = C:\psftp.exe ftp.blah.com 2>&1 
} 
Catch 
{ 
    echo "ERROR: " 
    echo $output 
    return 
} 

echo "DONE: " 
echo $output 

Cuando utilizo decir un dominio no válido, se devuelve un error como psftp.exe : Fatal: Network error: Connection refused pero mi código no es la captura ese.

¿Cómo puedo detectar errores?

Respuesta

15

try/catch en PowerShell no funciona con ejecutables nativos. Después de realizar la llamada a psftp.exe, verifique la variable automática $LastExitCode. código de salida que contendrá de psftp ej .:

$output = C:\psftp.exe ftp.blah.com 2>&1 
if ($LastExitCode -ne 0) 
{ 
    echo "ERROR: " 
    echo $output 
    return 
} 

El script anterior supone que el EXE devuelve 0 en caso de éxito y no cero en caso contrario. Si ese no es el caso, ajuste la condición if (...) según corresponda.

Cuestiones relacionadas