Wait-Event
等待直到引发特定事件,然后继续运行。
语法
Default (默认值)
Wait-Event
[[-SourceIdentifier] <String>]
[-Timeout <Int32>]
[<CommonParameters>]
说明
Wait-Event
cmdlet 将挂起脚本或函数的执行,直到引发特定事件。 检测到事件时,执行将恢复。 若要取消等待,请按 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
等待任何事件。
参数属性
类型: | String |
默认值: | None |
支持通配符: | False |
不显示: | False |
参数集
(All)
Position: | 0 |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | True |
来自剩余参数的值: | False |
-Timeout
指定 Wait-Event
等待事件发生的最长时间(以秒为单位)。 默认值 -1 无限期等待。 提交 Wait-Event
命令时开始计时。
如果超出指定时间,则等待结束,并且命令提示符返回,即使尚未引发该事件。 不会显示任何错误消息。
参数属性
类型: | Int32 |
默认值: | -1 |
支持通配符: | False |
不显示: | False |
别名: | TimeoutSec |
参数集
(All)
Position: | Named |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
String
输出
PSEventArgs
备注
事件、事件订阅和事件队列仅存在于当前会话中。 如果关闭当前会话,事件队列将被丢弃,事件订阅也将被取消。