次の方法で共有


Wait-Process

プロセスが停止するまで、次の入力を受け取るのを待ちます。

構文

Wait-Process
    [-Name] <String[]>
    [[-Timeout] <Int32>]
    [<CommonParameters>]
Wait-Process
    [-Id] <Int32[]>
    [[-Timeout] <Int32>]
    [<CommonParameters>]
Wait-Process
    [[-Timeout] <Int32>]
    -InputObject <Process[]>
    [<CommonParameters>]

説明

Wait-Process コマンドレットは、入力を受け入れる前に、実行中の 1 つ以上のプロセスが停止するのを待機します。 このコマンドレットによって、プロセスが停止するまで Windows PowerShell コンソールにコマンド プロンプトが表示されません。 プロセス名またはプロセス ID (PID) でプロセスを指定したり、プロセス オブジェクトを Wait-Process にパイプしたりできます。

Wait-Process は、ローカル コンピューターで実行されているプロセスでのみ機能します。

例 1: プロセスを停止して待機する

PS C:\> $nid = (Get-Process notepad).id
PS C:\> Stop-Process -Id $nid
PS C:\> Wait-Process -Id $nid

次の使用例は、メモ帳プロセスを停止し、プロセスが停止するまで待機してから、次のコマンドを続行します。

最初のコマンドでは、 Get-Process コマンドレットを使用してメモ帳プロセスの ID を取得します。 ID は $nid 変数に格納されます。

2 番目のコマンドでは、Stop-Process コマンドレットを使用して、$nidに格納されている ID でプロセスを停止します。

3 番目のコマンドでは 、Wait-Process を使用して、メモ帳プロセスが停止するまで待機します。 Wait-ProcessId パラメーターを使用してプロセスを識別します。

例 2: プロセスの指定

PS C:\> $p = Get-Process notepad
PS C:\> Wait-Process -Id $p.id
PS C:\> Wait-Process -Name "notepad"
PS C:\> Wait-Process -InputObject $p

これらのコマンドは 、Wait-Process にプロセスを指定する 3 つの異なる方法を示しています。 最初のコマンドは、メモ帳プロセスを取得し、$p変数に格納します。

2 番目のコマンドは Id パラメーターを使用し、3 番目のコマンドは Name パラメーターを使用し、4 番目のコマンドでは InputObject パラメーターを使用します。

これらのコマンドの結果はすべて同じであり、置き換えて使用することもできます。

例 3: 指定した時間プロセスを待機する

PS C:\> Wait-Process -Name outlook, winword -Timeout 30

このコマンドは、Outlook と Winword の各プロセスが停止するまで 30 秒間待ちます。 プロセスがいずれも停止しない場合、コマンドレットによって未終了エラーが表示され、コマンド プロンプトが表示されます。

パラメーター

-Id

プロセスのプロセス ID を指定します。 複数の ID を指定するには、ID をコンマで区切ります。 プロセスの PID を見つけるには、「」と入力します Get-Process

Type:Int32[]
Aliases:PID, ProcessId
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InputObject

プロセス オブジェクトを送信して、プロセスを指定します。 プロセス オブジェクトを含む変数を入力するか、Get-Process コマンドレットなどのプロセス オブジェクトを取得するコマンドまたは式を入力します。

Type:Process[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

プロセスのプロセス名を指定します。 複数の名前を指定するには、名前をコンマで区切ります。 ワイルドカード文字はサポートされていません。

Type:String[]
Aliases:ProcessName
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Timeout

このコマンドレットが指定したプロセスの停止を待機する最大時間 (秒単位) を指定します。 この時間が経過すると、まだ実行中のプロセスの一覧を示す未終了エラーが表示され、待機動作が終了します。 既定では、タイムアウトはありません。

Type:Int32
Aliases:TimeoutSec
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

Process

このコマンドレットにプロセス オブジェクトをパイプできます。

出力

None

このコマンドレットは出力を生成しません。

メモ

  • このコマンドレットでは、System.Diagnostics.Process クラスの WaitForExit メソッドを使用します。 このメソッドの詳細については、「Microsoft .NET Framework SDK」を参照してください。