サーチ…


コンソールアプリケーション

PS> console_app.exe
PS> & console_app.exe
PS> Start-Process console_app.exe

GUIアプリケーション

PS> gui_app.exe (1)
PS> & gui_app.exe (2)
PS> & gui_app.exe | Out-Null (3)
PS> Start-Process gui_app.exe (4)
PS> Start-Process gui_app.exe -Wait (5)

GUIアプリケーションは別のプロセスで起動し、すぐにPowerShellホストに制御を戻します。場合によっては、次のPowerShellステートメントを実行する前に処理を終了するアプリケーションが必要になることがあります。これは、アプリケーション出力を$ null(3)にパイプするか、-Waitスイッチ(5)でStart-Processを使用することで実現できます。

コンソールストリーム

PS> $ErrorActionPreference = "Continue" (1)
PS> & console_app.exe *>&1 | % { $_ } (2)
PS> & console_app.exe *>&1 | ? { $_ -is [System.Management.Automation.ErrorRecord] } (3)
PS> & console_app.exe *>&1 | ? { $_ -is [System.Management.Automation.WarningRecord] } (4)
PS> & console_app.exe *>&1 | ? { $_ -is [System.Management.Automation.VerboseRecord] } (5)
PS> & console_app.exe *>&1 (6)
PS> & console_app.exe 2>&1 (7)

ストリーム2には、System.Management.Automation.ErrorRecordオブジェクトが含まれています。 git.exeのようなアプリケーションの中には、情報の目的で「エラーストリーム」を使用しているものがありますが、必ずしもエラーではありません。この場合、終了コードを調べて、エラーストリームをエラーとして解釈する必要があるかどうかを判断するのが最善です。

PowerShellは、出力、エラー、警告、冗長、デバッグ、進捗の各ストリームを認識します。ネイティブアプリケーションでは、一般に次のストリームのみを使用します。出力、エラー、警告。

PowerShell 5では、すべてのストリームを標準出力/成功ストリーム(6)にリダイレクトできます。

以前のPowerShellバージョンでは、特定のストリームのみを標準出力/成功ストリーム(7)にリダイレクトできます。この例では、「エラーストリーム」が出力ストリームにリダイレクトされます。

終了コード

PS> $LastExitCode
PS> $?
PS> $Error[0]

これらは、PowerShellの組み込み変数で、最新のエラーに関する追加情報を提供します。 $LastExitCodeは、実行された最後のネイティブアプリケーションの最終的な終了コードです。 $? $Error[0]はPowerShellによって生成された最後のエラーレコードです。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow