Get-EventSubscriber
Obtiene los suscriptores de eventos de la sesión actual.
Sintaxis
Get-EventSubscriber [-SubscriptionId] <int> [-Force] [<CommonParameters>]
Get-EventSubscriber [[-SourceIdentifier] <string>] [-Force] [<CommonParameters>]
Descripción
El cmdlet Get-EventSubscriber obtiene los suscriptores de eventos de la sesión actual.
Al suscribirse a un evento mediante un cmdlet de registro de evento, se agrega a la sesión de Windows PowerShell un suscriptor de eventos, y cuando se producen los eventos a los que se suscribió, estos se agregan a la cola de eventos. Para cancelar la suscripción a un evento, elimine el suscriptor de eventos mediante el cmdlet Unregister-Event.
Parámetros
-Force
Obtiene todos los suscriptores de eventos, incluidos los de eventos ocultos mediante el parámetro SupportEvent de Register-ObjectEvent, Register-WmiEvent y Register-EngineEvent.
¿Requerido? |
false |
¿Posición? |
2 |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-SourceIdentifier <string>
Obtiene solo los suscriptores de eventos con el valor especificado de la propiedad SourceIdentifier. De forma predeterminada, Get-EventSubscriber obtiene todos los suscriptores de eventos de la sesión. No se permite el uso de caracteres comodín. Este parámetro distingue mayúsculas de minúsculas.
¿Requerido? |
false |
¿Posición? |
1 |
Valor predeterminado |
All event subscribers |
¿Aceptar canalización? |
true (ByPropertyName) |
¿Aceptar caracteres comodín? |
false |
-SubscriptionId <int>
Obtiene solo el identificador de suscripción especificado. De forma predeterminada, Get-EventSubscriber obtiene todos los suscriptores de eventos de la sesión.
¿Requerido? |
true |
¿Posición? |
1 |
Valor predeterminado |
ninguno |
¿Aceptar canalización? |
true (ByPropertyName) |
¿Aceptar caracteres comodín? |
false |
<CommonParameters>
Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.
Entradas y salidas
El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.
Entradas |
Ninguno No se pueden canalizar entradas a este cmdlet. |
Salidas |
System.Management.Automation.PSEventSubscriber Get-EventSubscriber devuelve un objeto que representa cada suscriptor de eventos. |
Notas
El cmdlet New-Event, que crea un evento personalizado, no genera un suscriptor. Por consiguiente, el cmdlet Get-EventSubscriber no encontrará un objeto de suscriptor para estos eventos. Sin embargo, si se usa el cmdlet Register-EngineEvent para suscribirse a un evento personalizado (a fin de reenviar el evento o especificar una acción), Get-EventSubscriber encontrará el suscriptor generado por Register-EngineEvent.
Los eventos, las suscripciones de eventos y la cola de eventos solo existen en la sesión actual. Si cierra la sesión actual, se descartará la cola de eventos y se cancelará la suscripción de eventos.
Ejemplo 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
Descripción
-----------
En este ejemplo, se utiliza un comando Get-EventSubscriber para obtener el suscriptor de eventos de un evento de temporizador.
El primer comando utiliza el cmdlet New-Object para crear una instancia de un objeto de temporizador. Guarda el nuevo objeto de temporizador en la variable $timer.
El segundo comando usa el cmdlet Get-Member para mostrar los eventos que están disponibles para los objetos de temporizador. El comando utiliza el parámetro Type del cmdlet Get-Member con el valor Event.
El tercer comando usa el cmdlet Register-ObjectEvent para registrar el evento Elapsed del objeto de temporizador.
El cuarto comando usa el cmdlet Get-EventSubscriber para obtener el suscriptor del evento Elapsed.
Ejemplo 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
Descripción
-----------
En este ejemplo, se muestra cómo utilizar el módulo dinámico del objeto PSEventJob en la propiedad Action del suscriptor eventos.
El primer comando utiliza el cmdlet New-Object para crear un objeto de temporizador. El segundo comando establece el intervalo del temporizador en 500 (milisegundos).
El tercer comando usa el cmdlet Register-ObjectEvent para registrar el evento Elapsed del objeto de temporizador. El comando incluye una acción que controla el evento. Una vez transcurrido el intervalo del temporizador, se provoca un evento y se ejecutan los comandos de la acción. En este caso, el cmdlet Get-Random genera un número aleatorio comprendido entre 0 y 100 y lo guarda en la variable $random. El identificador de origen del evento es Timer.Random.
Cuando se usa el parámetro Action en un comando Register-ObjectEvent, el comando devuelve un objeto PSEventJob que representa la acción.
El cuarto comando habilita el temporizador.
El quinto comando utiliza el cmdlet Get-EventSubscriber para obtener el suscriptor del evento Timer.Random. Guarda el objeto de suscriptor en la variable $subscriber.
El sexto comando muestra que la propiedad Action del objeto de suscriptor de eventos contiene un objeto PSEventJob. De hecho, contiene el mismo objeto PSEventJob que el comando Register-ObjectEvent devolvió.
El séptimo comando usa el cmdlet Format-List para mostrar con formato de lista todas las propiedades del objeto PSEventJob en la propiedad Action. El resultado revela que el objeto PSEventJob tiene una propiedad Module que contiene un módulo de script dinámico que implementa la acción.
Los comandos restantes utilizan el operador de llamada (&) para invocar el comando del módulo y mostrar el valor de la variable $random. El operador de llamada se puede usar para invocar cualquier comando de un módulo, incluidos los comandos no exportados. En este caso, los comandos muestran el número aleatorio que se genera cuando se produce el evento Elapsed.
Para obtener más información sobre los módulos, vea about_Modules.
Vea también
Conceptos
Register-ObjectEvent
Register-EngineEvent
Register-WmiEvent
Unregister-Event
Get-Event
New-Event
Remove-Event
Wait-Event