Wait-Event

等待,直到在继续运行之前引发特定事件。

语法

Wait-Event
    [[-SourceIdentifier] <String>]
    [-Timeout <Int32>]
    [<CommonParameters>]

说明

cmdlet Wait-Event 暂停执行脚本或函数,直到引发特定事件。 在检测到事件后会继续执行。 若要取消等待,请按 Ctrl+C

此功能为事件的轮询提供了一种替代方法。 它还允许你以两种不同的方式确定对事件的响应:

  • 使用事件订阅的 Action 参数
  • 等待事件返回,然后使用操作进行响应

示例

示例 1:等待下一个事件

此示例等待引发的下一个事件。

Wait-Event

示例 2:等待具有指定源标识符的事件

此示例等待引发的下一个事件,该事件的源标识符为 ProcessStarted。

Wait-Event -SourceIdentifier "ProcessStarted"

示例 3:等待计时器已用事件

此示例使用 Wait-Event cmdlet 在设置为 2000 毫秒的计时器上等待计时器事件。

$Timer = New-Object Timers.Timer
$objectEventArgs = @{
    InputObject = $Timer
    EventName = 'Elapsed'
    SourceIdentifier = 'Timer.Elapsed'
}
Register-ObjectEvent @objectEventArgs
$Timer.Interval = 2000
$Timer.Autoreset = $False
$Timer.Enabled = $True
Wait-Event Timer.Elapsed

ComputerName     :
RunspaceId       : bb560b14-ff43-48d4-b801-5adc31bbc6fb
EventIdentifier  : 1
Sender           : System.Timers.Timer
SourceEventArgs  : System.Timers.ElapsedEventArgs
SourceArgs       : {System.Timers.Timer, System.Timers.ElapsedEventArgs}
SourceIdentifier : Timer.Elapsed
TimeGenerated    : 4/23/2020 2:30:37 PM
MessageData      :

示例 4:在指定的超时后等待事件

此示例将等待最多 90 秒,等待引发的下一个事件,该事件的源标识符为 ProcessStarted。 如果达到该指定时间,则等待结束。

Wait-Event -SourceIdentifier "ProcessStarted" -Timeout 90

参数

-SourceIdentifier

指定此 cmdlet 等待事件的源标识符。 默认情况下, Wait-Event 等待任何事件。

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

-Timeout

指定等待事件发生的最长时间(以秒 Wait-Event 为单位)。 默认值为 -1,表示无限期地等待。 提交命令时开始 Wait-Event 计时。

如果超过指定时间,则等待结束,并返回命令提示符,即使尚未引发事件也是如此。 不显示任何错误消息。

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

输入

String

输出

PSEventArgs

备注

事件、事件订阅和事件队列仅存在于当前会话中。 如果关闭当前会话,将丢弃事件队列并取消事件订阅。