2012-09-10 6 views
8

私はこのようになりますしているものを、PowerShellの.EXE試着キャッチをしたい:Powershellの実行可能exeファイルにキャッチしてみませんか?

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

echo "DONE: " 
echo $output 

私は無効なドメインを言って使用する場合、それはpsftp.exe : Fatal: Network error: Connection refusedのようなエラーが返されますが、私のコードがキャッチされていませんそれ。

どのようにエラーを検出できますか?

答えて

15

try/catchは、ネイティブ実行可能ファイルでは機能しません。 psftp.exeを呼び出した後、自動変数$LastExitCodeをチェックします。それは例えばPSFTPの終了コードが含まれています。:

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

上記のスクリプトは、exeファイルがそうでなければ成功とゼロ以外で0を返すことを前提としています。そうでない場合は、それに応じてif (...)の条件を調整します。

関連する問題