Get-EventSubscriber
Ottiene i sottoscrittori di eventi nella sessione corrente.
Sintassi
Get-EventSubscriber [-SubscriptionId] <int> [-Force] [<CommonParameters>]
Get-EventSubscriber [[-SourceIdentifier] <string>] [-Force] [<CommonParameters>]
Descrizione
Il cmdlet Get-EventSubscriber consente di ottenere i sottoscrittori di eventi nella sessione corrente.
Quando si sottoscrive un evento tramite un cmdlet Register, un sottoscrittore di eventi viene aggiunto alla sessione di Windows PowerShell e gli eventi sottoscritti vengono aggiunti alla coda degli eventi ogni volta che vengono generati. Per annullare la sottoscrizione di un evento, eliminare il sottoscrittore di eventi tramite il cmdlet Unregister-Event.
Parametri
-Force
Ottiene tutti i sottoscrittori di eventi, inclusi quelli per gli eventi nascosti mediante il parametro SupportEvent di Register-ObjectEvent, Register-WmiEvent e Register-EngineEvent.
Obbligatorio? |
false |
Posizione? |
2 |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-SourceIdentifier <string>
Ottiene solo i sottoscrittori di eventi con il valore della proprietà SourceIdentifier specificato. Per impostazione predefinita, Get-EventSubscriber consente di ottenere tutti i sottoscrittori di eventi nella sessione. Non è consentito l'utilizzo di caratteri jolly. Questo parametro rileva la distinzione tra maiuscole e minuscole.
Obbligatorio? |
false |
Posizione? |
1 |
Valore predefinito |
All event subscribers |
Accettare input da pipeline? |
true (ByPropertyName) |
Accettare caratteri jolly? |
false |
-SubscriptionId <int>
Ottiene solo l'identificatore di sottoscrizione specificato. Per impostazione predefinita, Get-EventSubscriber consente di ottenere tutti i sottoscrittori di eventi nella sessione.
Obbligatorio? |
true |
Posizione? |
1 |
Valore predefinito |
nessuno |
Accettare input da pipeline? |
true (ByPropertyName) |
Accettare caratteri jolly? |
false |
<CommonParameters>
Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.
Input e output
Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.
Input |
Nessuno Non è possibile reindirizzare l'input a questo cmdlet. |
Output |
System.Management.Automation.PSEventSubscriber Get-EventSubscriber restituisce un oggetto che rappresenta ciascun sottoscrittore di eventi. |
Note
Il cmdlet New-Event, che crea un evento personalizzato, non genera un sottoscrittore. Il cmdlet Get-EventSubscriber non consente pertanto di trovare un oggetto sottoscrittore per questi eventi. Tuttavia, se si utilizza il cmdlet Register-EngineEvent per sottoscrivere un evento personalizzato (per inoltrare l'evento o specificare un'azione), Get-EventSubscriber consentirà di trovare il sottoscrittore generato da Register-EngineEvent.
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 eliminata e la sottoscrizione di eventi viene annullata.
Esempio 1
C:\PS>$timer = New-Object Timers.Timer
C:\PS> $timer | Get-Member -Type Event
C:\PS> Register-ObjectEvent -inputObject $timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
C:\PS> Get-EventSubscriber
C:\PS> $timer = New-Object Timers.Timer
C:\PS> $timer | Get-Member -Type Event
TypeName: System.Timers.Timer
Name MemberType Definition
---- ---------- ----------
Disposed Event System.EventHandler Disposed(System.Object, System.EventArgs)
Elapsed Event System.Timers.ElapsedEventHandler Elapsed(System.Object, System.Timers.ElapsedEventArgs)
C:\PS> Register-ObjectEvent -InputObject $timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
C:\PS> Get-EventSubscriber
SubscriptionId : 4
SourceObject : System.Timers.Timer
EventName : Elapsed
SourceIdentifier : Timer.Elapsed
Action :
HandlerDelegate :
SupportEvent : False
ForwardEvent : False
Descrizione
-----------
In questo esempio viene utilizzato un comando Get-EventSubscriber per ottenere il sottoscrittore di eventi per un evento del timer.
Nel primo comando viene utilizzato il cmdlet New-Object per creare un'istanza di un oggetto timer. Il nuovo oggetto timer viene salvato nella variabile $timer.
Nel secondo comando viene utilizzato il cmdlet Get-Member per visualizzare gli eventi disponibili per gli oggetti timer. Viene utilizzato il parametro Type del cmdlet Get-Member con un valore pari a Event.
Nel terzo comando viene utilizzato il cmdlet Register-ObjectEvent per registrare l'evento Elapsed nell'oggetto timer.
Nel quarto comando viene utilizzato il cmdlet Get-EventSubscriber per ottenere il sottoscrittore di eventi per l'evento Elapsed.
Esempio 2
C:\PS>$timer = New-Object Timers.Timer
C:\PS> $timer.Interval = 500
C:\PS> Register-ObjectEvent -inputObject $timer -eventName Elapsed -sourceIdentifier Timer.Random -Action { $random = Get-Random -Min 0 -Max 100 }
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
3 Timer.Random NotStarted False $random = Get-Random ...
C:\PS> $timer.Enabled = $true
C:\PS> $subscriber = Get-EventSubcriber -sourceIdentifer Timer.Random
C:\PS> ($subscriber.action).gettype().fullname
PSEventJob
C:\PS> $subscriber.action | format-list -property *
State : Running
Module : __DynamicModule_6b5cbe82-d634-41d1-ae5e-ad7fe8d57fe0
StatusMessage :
HasMoreData : True
Location :
Command : $random = Get-Random -Min 0 -Max 100
JobStateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 88944290-133d-4b44-8752-f901bd8012e2
Id : 1
Name : Timer.Random
ChildJobs : {}
...
C:\PS> & $subscriber.action.module {$random}
96
C:\PS> & $subscriber.action.module {$random}
23
Descrizione
-----------
In questo esempio viene illustrato come utilizzare il modulo dinamico nell'oggetto PSEventJob nella proprietà Action del sottoscrittore di eventi.
Nel primo comando viene utilizzato il cmdlet New-Object per creare un oggetto timer. Nel secondo comando viene impostato l'intervallo del timer su 500 (millisecondi).
Nel terzo comando viene utilizzato il cmdlet Register-ObjectEvent per registrare l'evento Elapsed dell'oggetto timer. Il comando include un'azione che gestisce l'evento. Quando l'intervallo del timer è trascorso, viene generato un evento e vengono eseguiti i comandi nell'azione. In questo caso, il cmdlet Get-Random genera un numero casuale compreso tra 0 e 100 e lo salva nella variabile $random. L'identificatore di origine dell'evento è Timer.Random.
Quando si utilizza un parametro Action in un comando Register-ObjectEvent, il comando restituisce un oggetto PSEventJob che rappresenta l'azione.
Nel quarto comando viene attivato il timer.
Nel quinto comando viene utilizzato il cmdlet Get-EventSubscriber per ottenere il sottoscrittore di eventi dell'evento Timer.Random. L'oggetto sottoscrittore di eventi viene salvato nella variabile $subscriber.
Nel sesto comando viene indicato che la proprietà Action dell'oggetto sottoscrittore di eventi contiene un oggetto PSEventJob. Infatti, contiene lo stesso oggetto PSEventJob restituito dal comando Register-ObjectEvent.
Nel settimo comando viene utilizzato il cmdlet Format-List per visualizzare in un elenco tutte le proprietà dell'oggetto PSEventJob nella proprietà Action. Il risultato rivela che l'oggetto PSEventJob dispone di una proprietà Module in cui è contenuto un modulo di script dinamico che implementa l'azione.
Nei comandi rimanenti viene utilizzano l'operatore di chiamata (&) per richiamare il comando nel modulo e visualizzare il valore della variabile $random. È possibile utilizzare l'operatore di chiamata per richiamare qualsiasi comando in un modulo, inclusi i comandi non esportati. In questo caso, nei comandi viene visualizzato il numero casuale che viene generato quando si verifica l'evento Elapsed.
Per ulteriori informazioni sui moduli, vedere about_Modules.
Vedere anche
Concetti
Register-ObjectEvent
Register-EngineEvent
Register-WmiEvent
Unregister-Event
Get-Event
New-Event
Remove-Event
Wait-Event