Udostępnij za pośrednictwem


Wait-Event

Czeka, aż zostanie zgłoszone określone zdarzenie, zanim przejdziesz do uruchomienia.

Składnia

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

Opis

Polecenie Wait-Event cmdlet zawiesza wykonywanie skryptu lub funkcji do momentu zgłoszenia określonego zdarzenia. Wykonanie jest wznawiane po wykryciu zdarzenia. Aby anulować oczekiwanie, naciśnij CTRL+C.

Ta funkcja stanowi alternatywę dla sondowania zdarzenia. Umożliwia również określenie odpowiedzi na zdarzenie na dwa różne sposoby:

  • przy użyciu parametru Action subskrypcji zdarzeń
  • oczekiwanie na powrót zdarzenia, a następnie udzielenie odpowiedzi za pomocą akcji

Przykłady

Przykład 1. Oczekiwanie na następne zdarzenie

Ten przykład oczekuje na następne zdarzenie, które zostanie zgłoszone.

Wait-Event

Przykład 2. Oczekiwanie na zdarzenie z określonym identyfikatorem źródła

Ten przykład oczekuje na następne zdarzenie, które zostanie zgłoszone i ma identyfikator źródłowy ProcessStarted.

Wait-Event -SourceIdentifier "ProcessStarted"

Przykład 3. Oczekiwanie na upłynięcie zdarzenia czasomierza

W tym przykładzie Wait-Event użyto polecenia cmdlet do oczekiwania na zdarzenie czasomierza na czasomierz ustawiony na 2000 milisekund.

$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      :

Przykład 4. Oczekiwanie na zdarzenie po upływie określonego limitu czasu

Ten przykład czeka do 90 sekund na następne zdarzenie, które zostanie zgłoszone i ma identyfikator źródłowy ProcessStarted. Jeśli określony czas wygaśnie, oczekiwanie kończy się.

Wait-Event -SourceIdentifier "ProcessStarted" -Timeout 90

Parametry

-SourceIdentifier

Określa identyfikator źródła, który to polecenie cmdlet oczekuje na zdarzenia. Domyślnie Wait-Event czeka na każde zdarzenie.

Typ:String
Position:0
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Timeout

Określa maksymalny czas w sekundach oczekiwania Wait-Event na wystąpienie zdarzenia. Wartość domyślna -1 czeka na czas nieokreślony. Czas rozpoczyna się po przesłaniu Wait-Event polecenia.

Jeśli określony czas zostanie przekroczony, oczekiwanie kończy się i zwraca wiersz polecenia, nawet jeśli zdarzenie nie zostało zgłoszone. Nie jest wyświetlany komunikat o błędzie.

Typ:Int32
Aliasy:TimeoutSec
Position:Named
Domyślna wartość:-1
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

String

Dane wyjściowe

PSEventArgs

Uwagi

Zdarzenia, subskrypcje zdarzeń i kolejka zdarzeń istnieją tylko w bieżącej sesji. Jeśli zamkniesz bieżącą sesję, kolejka zdarzeń zostanie odrzucona i subskrypcja zdarzeń zostanie anulowana.