共用方式為


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>]

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

參數

-Any

當多個進程傳遞至 Wait-Process時,Cmdlet 會等候所有進程在傳回之前結束。 使用此參數時,Cmdlet 會在任何進程結束時傳回。 其餘進程會繼續執行。

此參數已在PowerShell 7.4中新增。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Id

指定進程的進程識別碼。 若要指定多個識別碼,請使用逗號來分隔標識符。 若要尋找行程的 PID,請輸入 Get-Process

類型:Int32[]
別名:PID, ProcessId
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-InputObject

藉由提交進程物件來指定進程。 輸入包含進程物件的變數,或輸入取得進程物件的命令或表達式,例如 Get-Process Cmdlet。

類型:Process[]
Position:Named
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-Name

指定進程的進程名稱。 若要指定多個名稱,請使用逗號來分隔名稱。 不支援萬用字元。

類型:String[]
別名:ProcessName
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-PassThru

根據預設,此 Cmdlet 不會輸出任何專案。 使用此參數時,Cmdlet 會傳回物件,代表等候的進程。

此參數已在PowerShell 7.4中新增。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Timeout

指定此 Cmdlet 等候指定進程停止的最大時間,以秒為單位。 當此間隔到期時,命令會顯示非終止錯誤,其中會列出仍在執行的進程,並結束等候。 根據預設,沒有逾時。

類型:Int32
別名:TimeoutSec
Position:1
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

Process

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

輸出

None

根據預設,此 Cmdlet 不會傳回任何輸出。

Process

當您使用 PassThru 參數時,Cmdlet 會傳回進程物件。

備註

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

  • 不同於 Start-Process -WaitWait-Process 只會等候識別的進程。 Start-Process -Wait 會等候進程樹狀結構(進程及其所有子系)在傳回控件之前結束。