Wait-Event
等候引發特定事件後再繼續執行。
Syntax
Wait-Event
[[-SourceIdentifier] <String>]
[-Timeout <Int32>]
[<CommonParameters>]
Description
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 |
輸入
輸出
備註
事件、事件訂閱與事件佇列僅存在目前工作階段中。 若關閉目前工作階段,便會捨棄事件佇列,並取消事件訂閱。