Wait-Event
Attende che venga generato un determinato evento prima di proseguire l'esecuzione.
Sintassi
Wait-Event
[[-SourceIdentifier] <String>]
[-Timeout <Int32>]
[<CommonParameters>]
Descrizione
Il Wait-Event
cmdlet sospende l'esecuzione di uno script o di una funzione fino a quando non viene generato un determinato evento. L'esecuzione riprende quando viene rilevato l'evento. Per annullare l'attesa, premere CTRL+C.
Questa funzionalità rappresenta un'alternativa al polling di un evento. Consente inoltre di determinare la risposta a un evento in due modi diversi:
- utilizzo del parametro Action della sottoscrizione di eventi
- in attesa di un evento da restituire e quindi rispondere con un'azione
Esempio
Esempio 1: Attendere l'evento successivo
Questo esempio attende l'evento successivo generato.
Wait-Event
Esempio 2: Attendere un evento con un identificatore di origine specificato
Questo esempio attende l'evento successivo generato e con un identificatore di origine ProcessStarted.
Wait-Event -SourceIdentifier "ProcessStarted"
Esempio 3: Attendere un evento timer trascorso
In questo esempio viene utilizzato il Wait-Event
cmdlet per attendere un evento timer in un timer impostato per 2000 millisecondi.
$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 :
Esempio 4: Attendere un evento dopo un timeout specificato
Questo esempio attende fino a 90 secondi per l'evento successivo generato e con un identificatore di origine ProcessStarted. Allo scadere del tempo specificato, l'attesa termina.
Wait-Event -SourceIdentifier "ProcessStarted" -Timeout 90
Parametri
-SourceIdentifier
Specifica l'identificatore di origine che questo cmdlet attende gli eventi.
Per impostazione predefinita, Wait-Event
attende qualsiasi evento.
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Timeout
Specifica il tempo massimo, espresso in secondi, che attende che Wait-Event
l'evento si verifichi. Il valore predefinito -1 indica che l'attesa è illimitata. L'intervallo inizia quando si invia il Wait-Event
comando.
Se viene superato il tempo specificato, l'attesa termina e viene restituito il prompt dei comandi, anche se l'evento non è stato generato. Non viene visualizzato alcun messaggio di errore.
Tipo: | Int32 |
Alias: | TimeoutSec |
Posizione: | Named |
Valore predefinito: | -1 |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
Output
Note
Gli eventi, le sottoscrizioni di eventi e la coda degli eventi esistono solo nella sessione corrente. Se si chiude la sessione corrente, la coda degli eventi viene rimossa e la sottoscrizione dell'evento viene annullata.