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