PowerShellで外部プロセスを実行して終了コードを取得する方法

あらすじ

Start-Processで実行した外部プロセスの終了コードのプロパティが存在せず取得できない問題に直面。

参考

方法

Start-Processのオプションに -PassThru をつけるとExitCodeがnullにならなくなる。

ただしこの方法だと外部プロセスの実行速度が遅くなり(理由は未調査…。)、
Forループ等で何回も実行する場合に問題が出るため次のように-Waitオプションを抜いてプロセスハンドルをキャッシュして対処する。

おわい

PowerShell経験が年齢に伴っていないので、なぜWaitを入れると実効速度低下につながるか、
なぜプロセスハンドルをキャッシュするとExitCodeがnullにならないかをちゃんとした理由を調べる必要があります。

おわい

シェアする