[解決済み] PowerShellの$?と$LastExitCodeの違いについて
質問
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 になりますが、意外な反例を発見しました。
PowerShellでは$LastExitCode=0だが$?=Falseになる。stderrをstdoutにリダイレクトするとNativeCommandErrorが発生します。
.
解決方法は?
$LastExitCode
はネイティブアプリケーションのリターンコードです。
$?
を返すだけです。
True
または
False
は、最後のコマンド (コマンドレットまたはネイティブ) がエラーなしで終了したかどうかによって異なります。
コマンドレットの場合は通常例外を意味し、ネイティブアプリケーションの場合は0以外の終了コードを意味します。
PS> cmd /c "exit 5"
PS> $?
False
PS> cmd /c "exit 0"
PS> $?
True
を使ったコマンドレットをキャンセルする Ctrl + C も失敗としてカウントされます。ネイティブアプリケーションの場合は、どのような終了コードを設定するかによります。
関連
-
[解決済み】Curlが内部コマンド、外部コマンド、操作可能なプログラム、バッチファイルとして認識されない。
-
[解決済み] Windows用の堅牢で最小限のインストーラーを作成するには?[クローズド]
-
[解決済み] Windowsからリモートサーバーへscpでローカルファイルをコピーする [終了しました]。
-
[解決済み] インストールされたPowerShellのバージョンを確認する
-
[解決済み] PowerShellで「このシステムではスクリプトの実行が無効になっています」と言われる。
-
[解決済み] PowerShellでコードをコメントアウトする方法とは?
-
[解決済み] Windows PowerShellの環境変数を設定する
-
[解決済み] PowerShellで文字列と変数を連結する方法は?
-
[解決済み] CygwinとMinGWの違いは何ですか?
-
[解決済み】PowerShellスクリプトを実行する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】xcopyでexcludeパラメータを設定すると「パラメータの数が無効です」というエラーが返ってくる。
-
[解決済み] CreateProcess でエラー 193 (%1 は有効な Win32 アプリではありません) が発生する理由
-
[解決済み】cmdでdirを呼び出すと出力される。"Cドライブのボリュームにはラベルがありません。"
-
[解決済み】Npm root/administratorでこのコマンドを再度使用してみてください。
-
[解決済み] .dllファイルに「このプログラムはDOSモードでは実行できません」というテキストがあるのはなぜですか?
-
[解決済み] コマンドプロンプトから sqlite - 認識されないコマンド
-
[解決済み] Git のステータスが完了するまでに長い時間がかかる
-
[解決済み] 設定ファイルを開くことができません。Windowsの/usr/local/ssl/openssl.cnf [重複] を開くことができません。
-
[解決済み] コマンドプロンプト「Net View System Error 6118」[終了しました]。
-
[解決済み] Windows CLIでタイムスタンプを使ったPingを打つ