Wait-Process

等候處理程序停止之後,才接受其他輸入。

Syntax

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

Description

此 Cmdlet 無法在 Linux 或 macOS 上運作。

Cmdlet Wait-Process 會等候一或多個執行中的進程在接受輸入之前停止。 在 PowerShell 主控台中,此 Cmdlet 會隱藏命令提示字元,直到進程停止為止。 您可以透過進程名稱或進程識別碼來指定進程, (PID) ,或透過管線將進程物件傳送至 Wait-Process

Wait-Process 僅適用于在本機電腦上執行的進程。

範例

範例 1︰停止處理程序並等候

本範例會停止 記事本 程式,然後等候進程停止,再繼續進行下一個命令。

$nid = (Get-Process notepad).id
Stop-Process -Id $nid
Wait-Process -Id $nid

Cmdlet Get-Process 會取得 記事本 進程的進程識別碼,並將它儲存在變數中 $nidStop-Process 會停止儲存在 中的 $nid 識別碼的進程。 Wait-Process 等到 記事本 程式停止為止。

範例 2︰指定處理程序

此範例示範三種不同的方法,將進程指定為 Wait-Process 。 第一個命令會取得記事本程式,並將它儲存在變數中 $p 。 第二個命令會使用 Id 參數、第三個命令會使用 Name 參數,而第四個命令會使用 InputObject 參數。

$p = Get-Process notepad
Wait-Process -Id $p.id
Wait-Process -Name "notepad"
Wait-Process -InputObject $p

這些命令的結果皆相同,並且可交換使用。

範例 3︰等候處理程序一段指定的時間

在此範例中, Wait-Process 等候 30 秒讓 OutlookWinword 進程停止。 如果這兩個處理程序都沒有停止,則此 Cmdlet 會顯示一個非終止錯誤和命令提示字元。

Wait-Process -Name outlook, winword -Timeout 30

參數

-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 Cmdlet。

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

指定此 Cmdlet 等候指定之處理程序停止的時間上限 (秒)。 當這個間隔時間過期時,此命令會顯示一個非終止錯誤,當中列出仍在執行的處理程序,然後結束等候。 預設是沒有逾時。

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

輸入

Process

您可以使用管線將處理程序物件傳送至此 Cmdlet。

輸出

None

此 Cmdlet 不會產生任何輸出。

備註

  • 此 Cmdlet 使用System.Diagnostics.Process類別的WaitForExit方法。

  • 不同于 Start-Process -WaitWait-Process 只會等候識別的進程。 Start-Process -Wait 會等候進程樹狀結構 (進程及其所有子代) 結束,再傳回控制項。