13

Powershell で .exe に対して Try Catch を実行したいのですが、次のようなものがあります。

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が、コードはそれをキャッチしていません。

どうすればエラーをキャッチできますか?

4

2 に答える 2

26

try / catchPowerShell では、ネイティブの実行可能ファイルでは機能しません。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 (...)それに応じて条件を調整します。

于 2012-09-10T21:12:58.697 に答える