Wait-Process

等待进程停止,然后再接受更多输入。

语法

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

说明

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

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

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

示例

示例 1:停止进程并等待

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

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

Get-Process cmdlet 获取 记事本 进程的进程 ID,并将其存储在 $nid 变量中。 Stop-Process 停止 $nid中存储的 ID 的进程。 Wait-Process 等待,直到停止 记事本 进程。

示例 2:指定进程

此示例演示了三种不同的方法,用于指定要 Wait-Process的进程。 第一个命令获取记事本进程并将其存储在 $p 变量中。 第二个命令使用 Id 参数,第三个命令使用 Name 参数,第四个命令使用 InputObject 参数。

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

这些命令具有相同的结果,可以互换使用。

示例 3:等待指定时间的进程

在此示例中,Wait-Process 等待 30 秒,OutlookWinword 进程停止。 如果未停止这两个进程,则 cmdlet 将显示非终止错误和命令提示符。

PowerShell
Wait-Process -Name outlook, winword -Timeout 30

参数

-Any

当多个进程传递到 Wait-Process时,cmdlet 会等待所有进程在返回之前退出。 使用此参数时,cmdlet 会在任何进程退出时返回。 其余进程继续运行。

此参数已在 PowerShell 7.4 中添加。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Id

指定进程的进程 ID。 若要指定多个 ID,请使用逗号分隔 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 -Wait不同,Wait-Process 只等待标识的进程。 Start-Process -Wait 等待进程树(进程及其所有后代)在返回控件之前退出。