83

$?PowerShell では、との違いは何$LastExitCodeですか?

自動変数について読んだところ、次のように書かれていました。

$? Contains the execution status of the last operation. It contains TRUE if the last operation succeeded and FALSE if it failed.

$LastExitCode Contains the exit code of the last Windows-based program that was run.

それの定義では、$?成功と失敗の意味を説明していません。


$LastExitCode が 0 の場合にのみ Trueであると推測したため、質問し$?ましたが、驚くべき反例を見つけました: $LastExitCode=0 but $?=False in PowerShell. stderr を stdout にリダイレクトすると、 NativeCommandError が返されます。

4

1 に答える 1

97

$LastExitCodeネイティブ アプリケーションのリターン コードです。最後のコマンド (コマンドレットまたはネイティブ) がエラーなしで終了したかどうかに応じて、または$?のみを返します。TrueFalse

通常、コマンドレットの失敗は例外を意味し、ネイティブ アプリケーションの場合はゼロ以外の終了コードです。

PS> cmd /c "exit 5"
PS> $?
False
PS> cmd /c "exit 0"
PS> $?
True

Ctrl+を使用してコマンドレットをキャンセルするとC、失敗としてカウントされます。ネイティブ アプリケーションの場合は、設定した終了コードによって異なります。

于 2012-05-19T14:30:39.140 に答える