Wait-Event
等待特定事件被觸發後才繼續跑。
語法
Default (預設值)
Wait-Event
[[-SourceIdentifier] <String>]
[-Timeout <Int32>]
[<CommonParameters>]
Description
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
指定該指令本等待事件的來源識別碼。
預設情況下, 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
備註
事件、事件訂閱和事件佇列只存在於當前會話中。 如果您關閉當前的會話,事件佇列將被丟棄,事件訂閱將被取消。