Wait-Process

等到进程停止后再接受更多输入。

语法

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

说明

此 cmdlet 在 Linux 或 macOS 上不起作用。

cmdlet Wait-Process 等待一个或多个正在运行的进程停止,然后再接受输入。 在 PowerShell 控制台中,此 cmdlet 会取消命令提示符,直到进程停止。 可以按进程名称或进程 ID (PID) 指定进程,也可以通过管道将进程对象传递给 Wait-Process

Wait-Process 仅适用于在本地计算机上运行的进程。

示例

示例 1:停止进程并等待

此示例停止 记事本 进程,然后等待进程停止,然后继续执行下一个命令。

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

cmdlet Get-Process 获取 记事本 进程的进程 ID,并将其存储在 变量中 $nidStop-Process 停止进程,其 ID 存储在 中 $nidWait-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

指定进程的进程 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 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 等待进程树 (进程,其所有后代) 退出,然后返回控制权。