Register-EngineEvent
Sottoscrive gli eventi generati dal motore di Windows PowerShell e dal cmdlet New-Event.
Sintassi
Register-EngineEvent
[-SourceIdentifier] <String>
[[-Action] <ScriptBlock>]
[-MessageData <PSObject>]
[-SupportEvent]
[-Forward]
[-MaxTriggerCount <Int32>]
[<CommonParameters>]
Descrizione
Il cmdlet Register-EngineEvent sottoscrive eventi generati dal motore di Windows PowerShell e dal cmdlet New-Event. Usare il parametro SourceIdentifier per specificare l'evento.
È possibile usare questo cmdlet per sottoscrivere l'evento e gli eventi del motore di uscita generati dal cmdlet New-Event. Questi eventi vengono aggiunti automaticamente alla coda degli eventi nella sessione senza effettuare la sottoscrizione. Tuttavia, la sottoscrizione consente di inoltrare gli eventi, specificare un'azione per rispondere agli eventi e annullare la sottoscrizione.
Quando viene generato l'evento sottoscritto, viene aggiunto alla coda degli eventi nella sessione locale. Per ottenere gli eventi nella coda degli eventi, usare il cmdlet Get-Event.
Quando si sottoscrive un evento viene aggiunto un sottoscrittore di eventi alla sessione. Per ottenere i sottoscrittori di eventi nella sessione, usare il cmdlet Get-EventSubscriber. Per annullare la sottoscrizione, usare il cmdlet Unregister-Event, che elimina il sottoscrittore di eventi dalla sessione.
Esempio
Esempio 1: Registrare un evento del motore di PowerShell nei computer remoti
PS C:\> $S = New-PSSession -ComputerName "Server01, Server02"
PS C:\> Invoke-Command -Session $S { Register-EngineEvent -SourceIdentifier ([System.Management.Automation.PsEngineEvent]::Exiting) -Forward }
Questo comando esegue la registrazione a un evento del motore di Windows PowerShell in due computer remoti.
Il primo comando crea una sessione gestita dall'utente (PSSession) in ognuno dei computer remoti.
Il secondo comando usa il cmdlet Invoke-Command per eseguire il comando Register-EngineEvent nelle sessioni remote.
Il comando Register-EngineEvent usa il parametro SourceIdentifier per identificare l'evento. Usa il parametro Forward per inoltrare gli eventi dalla sessione remota a quella locale.
Esempio 2: Eseguire un'azione specificata quando si verifica l'evento Exiting
PS C:\> Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
Get-History | Export-Clixml $Home\history.clixml
}
Questo comando illustra come eseguire Register-EngineEvent per eseguire un'azione specifica quando si verifica l'evento PowerShell.Exiting . Il parametro SupportEvent viene aggiunto per nascondere la sottoscrizione dell'evento. Quando Windows PowerShell termina, in questo caso, la cronologia dei comandi della sessione di uscita viene esportata in formato XML in un nome file e un percorso nella directory $Home dell'utente.
Parametri
-Action
Specifica i comandi per gestire gli eventi. Quando viene generato un evento, vengono eseguiti i comandi in Action anziché inviare l'evento alla coda degli eventi. Racchiudere i comandi tra parentesi graffe ({}) per creare un blocco di script.
Il valore del parametro Action può includere le variabili automatiche $Event, $EventSubscriber, $Sender, $EventArgs e $Args che forniscono informazioni sull'evento al blocco di script Action. Per altre informazioni, vedere about_Automatic_Variables (https://go.microsoft.com/fwlink/?LinkID=113212).
Quando si specifica un'azione, Register-EngineEvent restituisce un oggetto processo di evento che rappresenta tale azione. È possibile usare i cmdlet Job per gestire il processo dell'evento.
Type: | ScriptBlock |
Position: | 101 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Forward
Indica che il cmdlet invia eventi per questa sottoscrizione alla sessione nel computer locale. Usare questo parametro quando si esegue la registrazione per gli eventi in un computer remoto o in una sessione remota.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaxTriggerCount
Specifica il numero massimo di trigger.
Il valore del parametro Action può includere le variabili automatiche $Event, $EventSubscriber, $Sender, $EventArgs e $Args che forniscono informazioni sull'evento al blocco di script Action. Per altre informazioni, vedere about_Automatic_Variables (https://go.microsoft.com/fwlink/?LinkID=113212).
Quando si specifica un'azione, Register-EngineEvent restituisce un oggetto processo di evento che rappresenta tale azione. È possibile usare i cmdlet Job per gestire il processo dell'evento.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MessageData
Specifica i dati aggiuntivi associati all'evento. Il valore di questo parametro viene visualizzato nella proprietà MessageData dell'oggetto evento.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceIdentifier
Specifica l'identificatore di origine dell'evento a cui si effettua la sottoscrizione. L'identificatore di origine selezionato deve essere univoco nella sessione corrente. Questo parametro è obbligatorio.
Il valore di questo parametro viene visualizzato nel valore della proprietà SourceIdentifier dell'oggetto sottoscrittore e di tutti gli oggetti evento associati alla sottoscrizione.
I valori EngineEvent supportati includono PowerShell.Exiting, PowerShell.OnIdle e PowerShell.OnScriptBlockInvoke.
Type: | String |
Position: | 100 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SupportEvent
Indica che il cmdlet nasconde la sottoscrizione dell'evento. Aggiungere questo parametro quando la sottoscrizione corrente fa parte di un meccanismo di registrazione eventi più complesso e non deve essere individuato in modo indipendente.
Per visualizzare o annullare una sottoscrizione creata con il parametro SupportEvent , aggiungere il parametro Force ai cmdlet di Get-EventSubscriber o Unregister-Event.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
None
Non è possibile inviare l'input tramite pipe a Register-EngineEvent.
Output
None or System.Management.Automation.PSEventJob
Se si usa il parametro Action, Register-EngineEvent restituisce un oggetto System.Management.Automation.PSEventJob. In caso contrario, non genera alcun 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.