Wait-Event
Attende fino a quando non viene generato un determinato evento prima di continuare l'esecuzione.
Sintassi
Wait-Event
[[-SourceIdentifier] <String>]
[-Timeout <Int32>]
[<CommonParameters>]
Descrizione
Il cmdlet Wait-Event
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à offre un'alternativa al polling per 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 cmdlet Wait-Event
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 di ProcessStarted. Se l'ora specificata scade, 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, in secondi, che Wait-Event
attende che l'evento si verifichi. Il valore predefinito, -1, attende per un periodo illimitato. L'intervallo inizia quando si invia il comando Wait-Event
.
Se viene superato il tempo specificato, l'attesa termina e il prompt dei comandi restituisce, 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 di eventi esistono solo nella sessione corrente. Se si chiude la sessione corrente, la coda di eventi viene eliminata e la sottoscrizione di eventi viene annullata.