終了したプロセスを知る
「get-process」はCmdlet実行時のスナップショット
「get-process」で取得できるプロセス情報は、Cmdlet実行時のスナップショットです。
あるプロセスが生きているかをチェックする際、
もちろん、毎回「get-process」を発行すれば確認は可能ですが、それではコストがかかりすぎます。
今回紹介する方法を使うと、毎回「get-process」を発行することなく、
「指定プロセスが終了したかどうか」をチェックすることが可能になります。
「HasExited」プロパティ
「プロセスが終了したかどうか」を判定するには、
「get-process」で取得できる「System.Diagnostics.Process」オブジェクトの「HasExited」プロパティを利用します。
参考:HasExited Property
「HasExited」プロパティは、
- プロセスが終了していれば「True」
- プロセスが生きていれば「False」
を返します。
終了したプロセスを取得する
最初に「メモ帳」と「電卓」を起動し、プロセス一覧を取得します。
MSH C:\> notepad MSH C:\> calc MSH C:\> $process = get-process
次に「メモ帳」と「電卓」の「×」ボタンを押してプロセスを終了してから、
以下のスクリプトを実行してみましょう。
MSH C:\> $process | where {$_.hasexited} Handles NPM(K) PM(K) WS(K) VS(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 62 4 1180 3856 25 2828 calc 66 4 1212 3812 25 1940 notepad
「メモ帳」と「電卓」のプロセスが終了した事が分かります。