Condividi tramite


Wait-Event

Attende fino a quando non viene generato un determinato evento prima di continuare l'esecuzione.

Sintassi

Default (Impostazione predefinita)

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.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:0
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti: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.

Proprietà dei parametri

Tipo:Int32
Valore predefinito:-1
Supporta i caratteri jolly:False
DontShow:False
Alias:TimeoutSec

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

Input

String

Output

PSEventArgs

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.