Get-EventSubscriber
Obtiene los suscriptores de eventos de la sesión actual.
Sintaxis
BySource (valor predeterminado)
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
ById
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Description
El cmdlet Get-EventSubscriber obtiene los suscriptores de eventos en la sesión actual.
Cuando se suscribe a un evento mediante un cmdlet Register-Event, se agrega un suscriptor de eventos a la sesión de Windows PowerShell, y los eventos a los que se ha suscrito se agregan a la cola de eventos cada vez que se generan. Para cancelar una suscripción de eventos, elimine el suscriptor de eventos mediante el cmdlet Unregister-Event.
Ejemplos
Ejemplo 1: Obtener el suscriptor de eventos para un evento de temporizador
PS C:\> $Timer = New-Object Timers.Timer
PS C:\> $Timer | Get-Member -Type Event
PS C:\> Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
PS C:\> Get-EventSubscriber
PS C:\> $Timer = New-Object Timers.Timer
PS C:\> $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) PS C:\> Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
PS C:\> Get-EventSubscriber
SubscriptionId : 4
SourceObject : System.Timers.Timer
EventName : Elapsed
SourceIdentifier : Timer.Elapsed
Action :
HandlerDelegate :
SupportEvent : False
ForwardEvent : False
En este ejemplo se usa un comando Get-EventSubscriber para obtener el suscriptor de eventos para un evento de temporizador.
El primer comando usa 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 del temporizador. El comando usa el parámetro Type del cmdlet Get-Member con un valor de Event.
El tercer comando usa el cmdlet Register-ObjectEvent para registrarse para el evento Transcurrido en el objeto de temporizador.
El cuarto comando usa el cmdlet Get-EventSubscriber para obtener el suscriptor de eventos para el evento Transcurrido.
Ejemplo 2: Uso del módulo dinámico en PSEventJob en la propiedad Action del suscriptor de eventos
PS C:\> $Timer = New-Object Timers.Timer
PS C:\> $Timer.Interval = 500
PS C:\> 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 ...
PS C:\> $Timer.Enabled = $True
PS C:\> $Subscriber = Get-EventSubscriber -SourceIdentifier Timer.Random
PS C:\> ($Subscriber.action).gettype().fullname
System.Management.Automation.PSEventJob
PS C:\> $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 : {}
...
PS C:\> & $Subscriber.action.module {$Random}
96
PS C:\> & $Subscriber.action.module {$Random}
23
En este ejemplo se muestra cómo usar el módulo dinámico en el objeto PSEventJob en la propiedad Action del suscriptor de eventos.
El primer comando usa 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 Transcurrido del objeto timer. El comando incluye una acción que controla el evento. Cada vez que transcurre el intervalo del temporizador, se genera un evento y se ejecutan los comandos de la acción. En este caso, el cmdlet Get-Random genera un número aleatorio entre 0 y 100 y lo guarda en la variable $Random. El identificador de origen del evento es Timer.Random.
Cuando se usa un parámetro action
El cuarto comando habilita el temporizador.
El quinto comando usa el cmdlet Get-EventSubscriber para obtener el suscriptor de eventos del evento Timer.Random. Guarda el objeto de suscriptor de eventos 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 devolvió el comando Register-ObjectEvent.
El séptimo comando usa el cmdlet Format-List para mostrar todas las propiedades del objeto PSEventJob en la propiedad Action de una lista. 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 usan el operador de llamada (&) para invocar el comando en el módulo y mostrar el valor de la variable $Random. Puede usar el operador de llamada para invocar cualquier comando de un módulo, incluidos los comandos que no se exportan. En este caso, los comandos muestran el número aleatorio que se genera cuando se produce el evento Transcurrido.
Para obtener más información sobre los módulos, consulte about_Modules.
Parámetros
-Force
Indica que este cmdlet obtiene todos los suscriptores de eventos, incluidos los suscriptores de eventos que están ocultos mediante el SupportEvent parámetro de Register-ObjectEvent, Register-WmiEvent y Register-EngineEvent.
Propiedades de parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | 1 |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-SourceIdentifier
Especifica el valor de la propiedad SourceIdentifier que obtiene solo los suscriptores de eventos. De forma predeterminada, get-EventSubscriber obtiene todos los suscriptores de eventos de la sesión. No se permiten caracteres comodín. Este parámetro distingue mayúsculas de minúsculas.
Propiedades de parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
BySource
| Posición: | 0 |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
-SubscriptionId
Especifica el identificador de suscripción que obtiene este cmdlet. De forma predeterminada, get-EventSubscriber obtiene todos los suscriptores de eventos de la sesión.
Propiedades de parámetro
| Tipo: | Int32 |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | Id |
Conjuntos de parámetros
ById
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
CommonParameters
Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.
Entradas
None
No se puede canalizar la entrada a este cmdlet.
Salidas
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 lo tanto, el cmdlet Get-EventSubscriber no encontrará un objeto de suscriptor para estos eventos. Sin embargo, si usa el cmdlet Register-EngineEvent para suscribirse a un evento personalizado (para reenviar el evento o especificar una acción), get-EventSubscriber encontrará el suscriptor que register-EngineEvent genera.
Los eventos, las suscripciones de eventos y la cola de eventos solo existen en la sesión actual. Si se cierra la sesión actual, se descarta la fila de eventos y se cancela la suscripción al evento.