Поделиться через


Wait-Event

Ожидает, пока не будет вызвано определенное событие, прежде чем продолжить выполнение.

Синтаксис

Wait-Event
    [[-SourceIdentifier] <String>]
    [-Timeout <Int32>]
    [<CommonParameters>]

Описание

Командлет Wait-Event приостанавливает выполнение скрипта или функции до тех пор, пока не будет вызвано определенное событие. Выполнение возобновляется при обнаружении события. Чтобы отменить ожидание, нажмите клавиши CTRL +C.

Эта функция предоставляет альтернативу опросу для события. Он также позволяет определить ответ на событие двумя разными способами:

  • использование параметра Action подписки на событие
  • ожидание возврата события, а затем реагирование с помощью действия

Примеры

Пример 1. Ожидание следующего события

В этом примере ожидается следующее событие, которое вызывается.

Wait-Event

Пример 2. Ожидание события с указанным идентификатором источника

В этом примере ожидается следующее событие, которое вызывается и имеется исходный идентификатор ProcessStarted.

Wait-Event -SourceIdentifier "ProcessStarted"

Пример 3. Ожидание события таймера, прошедшего

В этом примере используется командлет Wait-Event для ожидания события таймера в таймере, заданном в 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
Position:0
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Timeout

Указывает максимальное время в секундах, которое Wait-Event ожидает возникновения события. Значение по умолчанию -1 ожидает неограниченное время. Время начинается при отправке команды Wait-Event.

Если указанное время превышено, ожидание заканчивается и командная строка возвращается, даже если событие не было поднято. Сообщение об ошибке не отображается.

Тип:Int32
Aliases:TimeoutSec
Position:Named
Default value:-1
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

String

Выходные данные

PSEventArgs

Примечания

События, подписки на события и очередь событий существуют только в текущем сеансе. При закрытии текущего сеанса очередь событий удаляется, а подписка на события отменяется.