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

備註

事件、事件訂閱和事件佇列只存在於當前會話中。 如果您關閉當前的會話,事件佇列將被丟棄,事件訂閱將被取消。