逆引きリファレンスアイテム・ファイルオブジェクトコア関数・その他システム・サービスセキュリティコマンドヘルプホーム逆引きリファレンスシステム・サービス【Wait-Process】PowerShellで実行中のプロセスが停止するのを待つ方法2017年3月13日SHAREツイートシェアはてブLINEPocketこんにちは。【PowerShellでプロセスの停止を待つ方法】についてご紹介します。コマンドレットを使用することができます。「多重コピーをかけて完了まで待機する」などの処理を行いたい時に便利なコマンドレットです。「プロセスの停止まで待つ」のではなく「プロセスを強制的に停止する」場合はこちら↓の記事をご参考ください。プロセス停止まで待機するプロセスの停止まで待機するコマンドレットにWait-Processというものがります。<プロセスオブジェクト>【入力】System.Diagnostics.Process【出力】None【エイリアス】なしWait-Processのオプションは比較的少なく使い方も簡単です。「プロセスとは何か」については「プロセスとは...」をご覧下さい。プロセス名を指定してプロセス停止を待つ特定のプロセス名を指定してプロセス停止を待つ方法をご紹介します。コマンドレット詳細に記載した「パターン1(プロセス名で指定)」のオプションを指定します。コマンドレットを使用します。url=”https://cheshire-wara.com/powershell/ps-cmdlets/system-service/get-process/”]今回は例として「メモ帳」が停止するまで待機してみます。メモ帳が起動しているか確認してみましょう。notepad次にプロセス停止まで待機します。notepadと、メモ帳を閉じるまでこのまま実行中が続きます。上の結果では待機している様子がわかりにくいかもしれませんので実際に試してみてもらった方がわかるかと思います。プロセス名を指定してプロセス停止まで待機する場合は同じプロセス名を持つ全てのプロセスが停止するまで処理が終わらないことに注意してください。指定してプロセス停止を待つ方法をご紹介します。コマンドレット詳細に記載した「パターン2(プロセスIDで指定)」のオプションを指定します。notepadプロセスIDは実行中の全てのプロセスに一意に設定されるため「必ず1つのプロセスを指定できる」という特徴があります。指定してメモ帳のプロセスが停止するまで待機してみましょう。今回は待機中にメモ帳を手動で閉じます。プロセスが見つかりません。NoProcessFoundForGivenId,Microsoft.PowerShell.Commands.GetProcessCommandこのように指定したプロセスIDが停止すれば次の処理に進むことができます。オプションを使用してプロセスの停止を待つ方法があります。して指定するオブジェクトは「System.Diagnostics.Process」型である必要があります。簡単に表すとプロセス専用型のオブジェクトです。オプションでオブジェクトを指定する場合に良く使う手法は立ち上げたプロセスの情報を変数に格納して待機するだと思います。オプションを指定すると立ち上げたプロセスの情報をオブジェクトとして保持することができます。終了待機という流れで実行しています。メソッドによる型の確認でも「System.Diagnostics.Process」であることがわかりますね。起動したメモ帳のプロセス情報を変数$Objを使って、「Start-Process」「Wait-Process」「Get-Process」コマンドレット間のやり取りを行っています。よる手法は「スクリプト中に別のアプリケーションやファイルを並列実行し処理が完了したら次に進む」なんてことをやりたい時には非常に活躍します。オプションが用意されています。コマンドレットはピュアなので何も指定しなければ、ずっと待ち続けてしまいます。自動化するためのスクリプトで待機され続けてしまうと困りますよね。オプションを使用します。<待機時間(秒)>タイムアウトの指定は秒単位(S)で指定します。ProcessNotTerminated,Microsoft.PowerShell.Commands.WaitProcessCommandこのようにプロセス停止の待機時間に制限を設けることができます。使い方によっては非常に便利になりそうですね。<待機する対象>を使用する。コメントをキャンセルメールアドレスが公開されることはありません。関東在住の何でも屋SE(Web/AI/インフラ)。一人前を目指して日々勉強中...プライベートでも仕事でもPowerShellやPythonでツールを作って遊ぶのが好きです。