等到特定事件引發後才繼續執行。
語法
Wait-Event [[-SourceIdentifier] <string>] [-Timeout <int>] [<CommonParameters>]
描述
Wait-Event Cmdlet 會暫停執行指令碼或函數直到特定事件引發為止。偵測到事件時會繼續執行。若要取消等候,請按 CTRL+C。
這項功能不但提供輪詢事件的替代方式,還能讓您決定以兩種不同的方式回應事件:一種是使用事件訂閱的 Action 參數,另一種是等候事件傳回後再以動作回應。
參數
-SourceIdentifier <string>
只等候有指定的來源識別元的事件。根據預設,Wait-Event 會等候任何事件。
必要? |
false |
位置? |
1 |
預設值 |
All events |
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Timeout <int>
決定 Wait-Event 等候事件發生的時間上限,以秒為單位。預設值 -1 會無限期等候。在提交 Wait-Event 命令後就會開始計時。
如果超過指定的時間,等候便結束並傳回命令提示字元,即使尚未引發事件也一樣。並且不會顯示任何錯誤訊息。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.String |
輸出 |
System.String |
附註
事件、事件訂閱和事件佇列只存在於目前的工作階段中。如果關閉目前的工作階段,則會捨棄事件佇列並取消事件訂閱。
範例 1
C:\PS>wait-event 描述 ----------- 這個命令會等候下一個引發的事件。
範例 2
C:\PS>wait-event -sourceIdentifier "ProcessStarted" 描述 ----------- 這個命令會等候下一個引發且來源識別元為 "ProcessStarted" 的事件。
範例 3
C:\PS>$timer.Interval = 2000 C:\PS> $timer.Autoreset = $false C:\PS> $timer.Enabled = $true; Wait-Event Timer.Elapsed # After 2 seconds EventIdentifier : 12 Sender : System.Timers.Timer SourceEventArgs : System.Timers.ElapsedEventArgs SourceArgs : {System.Timers.Timer, System.Timers.ElapsedEventArgs} SourceIdentifier : Timer.Elapsed TimeGenerated : 6/10/2008 3:24:18 PM MessageData : ForwardEvent : False 描述 ----------- 這個命令會使用 Wait-Event Cmdlet 等候已設定成 2000 毫秒的計時器上的計時器物件。
範例 4
C:\PS>wait-event -sourceIdentifier "ProcessStarted" -timeout 90 描述 ----------- 這個命令會等候下一個引發且來源識別元為 "ProcessStarted" 的事件 (最多 90 秒)。如果超過指定的時間,等候便結束。
請參閱