Wait-Process
プロセスが停止するまで、次の入力を受け取るのを待ちます。
構文
Wait-Process
[-Name] <String[]>
[[-Timeout] <Int32>]
[-Any]
[-PassThru]
[<CommonParameters>]
Wait-Process
[-Id] <Int32[]>
[[-Timeout] <Int32>]
[-Any]
[-PassThru]
[<CommonParameters>]
Wait-Process
[[-Timeout] <Int32>]
[-Any]
[-PassThru]
-InputObject <Process[]>
[<CommonParameters>]
説明
このコマンドレットは、Linux または macOS では機能しません。
Wait-Process
コマンドレットは、入力を受け入れる前に、実行中の 1 つ以上のプロセスが停止するのを待機します。 PowerShell コンソールでは、このコマンドレットは、プロセスが停止するまでコマンド プロンプトを抑制します。 プロセス名またはプロセス ID (PID) でプロセスを指定したり、プロセス オブジェクトをパイプ処理して Wait-Process
したりできます。
Wait-Process
は、ローカル コンピューターで実行されているプロセスでのみ機能します。
例
例 1: プロセスを停止して待機する
次の使用例は、 Notepad プロセスを停止し、プロセスが停止するのを待ってから、次のコマンドに進みます。
$nid = (Get-Process notepad).id
Stop-Process -Id $nid
Wait-Process -Id $nid
Get-Process
コマンドレットは、Notepad プロセスのプロセス ID を取得し、$nid
変数に格納します。 Stop-Process
は、 $nid
に格納されている ID でプロセスを停止します。 Wait-Process
は、 Notepad プロセスが停止するまで待機します。
例 2: プロセスの指定
この例では、 Wait-Process
するプロセスを指定する 3 つの異なる方法を示します。 最初のコマンドはメモ帳プロセスを取得し、 $p
変数に格納します。 2 番目のコマンドは Id パラメーターを使用し、3 番目のコマンドは Name パラメーターを使用し、4 番目のコマンドでは InputObject パラメーターを使用します。
$p = Get-Process notepad
Wait-Process -Id $p.id
Wait-Process -Name "notepad"
Wait-Process -InputObject $p
これらのコマンドの結果はすべて同じであり、置き換えて使用することもできます。
例 3: 指定した時間プロセスを待機する
この例では、 Wait-Process
は、 Outlook および Winword プロセスが停止するまで 30 秒待機します。 プロセスがいずれも停止しない場合、コマンドレットによって未終了エラーが表示され、コマンド プロンプトが表示されます。
Wait-Process -Name outlook, winword -Timeout 30
パラメーター
-Any
複数のプロセスが Wait-Process
に渡されると、コマンドレットはすべてのプロセスが終了するまで待機してから戻ります。 このパラメーターを使用すると、いずれかのプロセスが終了したときにコマンドレットが返されます。 残りのプロセスは引き続き実行されます。
このパラメーターは PowerShell 7.4 で追加されました。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Id
プロセスのプロセス ID を指定します。 複数の ID を指定するには、ID をコンマで区切ります。
プロセスの PID を検索するには、「 Get-Process
」と入力します。
型: | Int32[] |
Aliases: | PID, ProcessId |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-InputObject
プロセス オブジェクトを送信して、プロセスを指定します。 プロセス オブジェクトを含む変数を入力するか、 Get-Process
コマンドレットなどのプロセス オブジェクトを取得するコマンドまたは式を入力します。
型: | Process[] |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Name
プロセスのプロセス名を指定します。 複数の名前を指定するには、名前をコンマで区切ります。 ワイルドカード文字はサポートされていません。
型: | String[] |
Aliases: | ProcessName |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-PassThru
既定では、このコマンドレットは何も出力しません。 このパラメーターを使用すると、コマンドレットは待機していたプロセスを表すオブジェクトを返します。
このパラメーターは PowerShell 7.4 で追加されました。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Timeout
このコマンドレットが指定したプロセスの停止を待機する最大時間 (秒単位) を指定します。 この時間が経過すると、まだ実行中のプロセスの一覧を示す未終了エラーが表示され、待機動作が終了します。 既定では、タイムアウトはありません。
型: | Int32 |
Aliases: | TimeoutSec |
配置: | 1 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
このコマンドレットには、プロセス オブジェクトをパイプ処理できます。
出力
None
既定では、このコマンドレットは出力を返しません。
このコマンドレットは、 PassThru パラメーターを使用するとプロセス オブジェクトを返します。
メモ
このコマンドレットでは、System.Diagnostics.Process クラスの WaitForExit メソッドを使用します。
Start-Process -Wait
とは異なり、Wait-Process
は識別されたプロセスのみを待機します。Start-Process -Wait
は、制御を返す前に、プロセス ツリー (プロセスとそのすべての子孫) が終了するのを待機します。
関連リンク
PowerShell