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




Argomenti della Guida