Get-EventSubscriber
Obtiene los suscriptores de eventos de la sesión actual.
Sintaxis
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Description
El Get-EventSubscriber
cmdlet obtiene los suscriptores de eventos de la sesión actual.
Al suscribirse a un evento mediante un cmdlet de eventos del Registro, 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 su cola de eventos cada vez que se generan. Para cancelar una suscripción de eventos, elimine el suscriptor de eventos mediante el Unregister-Event
cmdlet .
Ejemplos
Ejemplo 1: Obtener el suscriptor de eventos para un evento de temporizador
En este ejemplo se usa un Get-EventSubscriber
comando para obtener el suscriptor de eventos para un evento de temporizador.
El primer comando usa el New-Object
cmdlet para crear una instancia de un objeto de temporizador. Guarda el nuevo objeto de temporizador en la $Timer
variable .
El segundo comando usa el Get-Member
cmdlet para mostrar los eventos que están disponibles para los objetos del temporizador. El comando usa el parámetro Type del Get-Member
cmdlet con un valor de Event.
$Timer = New-Object Timers.Timer
$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)
Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
Get-EventSubscriber
SubscriptionId : 4
SourceObject : System.Timers.Timer
EventName : Elapsed
SourceIdentifier : Timer.Elapsed
Action :
HandlerDelegate :
SupportEvent : False
ForwardEvent : False
El tercer comando usa el Register-ObjectEvent
cmdlet para registrarse para el evento Transcurrido en el objeto de temporizador.
El cuarto comando usa el Get-EventSubscriber
cmdlet 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
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 New-Object
cmdlet para crear un objeto de temporizador. El segundo comando establece el intervalo del temporizador en 500 (milisegundos).
$Timer = New-Object Timers.Timer
$Timer.Interval = 500
$params = @{
InputObject = $Timer
EventName = 'Elapsed'
SourceIdentifier = 'Timer.Random'
Action = { $Random = Get-Random -Min 0 -Max 100 }
}
Register-ObjectEvent @params
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
3 Timer.Random NotStarted False $Random = Get-Random ...
$Timer.Enabled = $True
$Subscriber = Get-EventSubscriber -SourceIdentifier Timer.Random
($Subscriber.action).gettype().fullname
System.Management.Automation.PSEventJob
$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 : {}
...
& $Subscriber.action.module {$Random}
El tercer comando usa el Register-ObjectEvent
cmdlet 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 Get-Random
cmdlet genera un número aleatorio entre 0 y 100 y lo guarda en la $Random
variable . El identificador de origen del evento es Timer.Random.
Cuando se usa un parámetro Action en un Register-ObjectEvent
comando, el comando devuelve un objeto PSEventJob que representa la acción.
El cuarto comando habilita al temporizador.
El quinto comando usa el Get-EventSubscriber
cmdlet para obtener el suscriptor de eventos del evento Timer.Random . Guarda el objeto de suscriptor de eventos en la $Subscriber
variable .
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 Register-ObjectEvent
comando.
El séptimo comando usa el Format-List
cmdlet 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 utilizar el operador de llamada para invocar cualquier comando en 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 Elapsed.
Para obtener más información sobre los módulos, consulte about_Modules.
Ejemplo 3: Obtener suscriptores de eventos ocultos
En este ejemplo se registra un suscriptor de eventos para el evento PowerShell.Exiting . La suscripción se registra mediante el parámetro SupportEvent , que oculta el suscriptor de eventos de la salida predeterminada del Get-EventSubscriber
cmdlet. Debe usar el parámetro Force para obtener todos los suscriptores de eventos, incluidos los suscriptores ocultos.
Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
Get-History | Export-Clixml d:\temp\history.clixml
}
Get-EventSubscriber # No output - must use -Force
Get-EventSubscriber -Force
SubscriptionId : 1
SourceObject :
EventName :
SourceIdentifier : PowerShell.Exiting
Action : System.Management.Automation.PSEventJob
HandlerDelegate :
SupportEvent : True
ForwardEvent : False
Parámetros
-Force
Indica que este cmdlet obtiene todos los suscriptores de eventos, incluidos los suscriptores para eventos ocultos mediante el parámetro SupportEvent de Register-ObjectEvent
, Register-WmiEvent
y Register-EngineEvent
.
Tipo: | SwitchParameter |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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.
Tipo: | String |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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.
Tipo: | Int32 |
Alias: | Id |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
Entradas
None
No se pueden canalizar objetos a este cmdlet.
Salidas
Este cmdlet devuelve un objeto PSEventSubscriber para cada suscriptor de eventos.
Notas
El New-Event
cmdlet , que crea un evento personalizado, no genera un suscriptor. Por lo tanto, el Get-EventSubscriber
cmdlet no encontrará un objeto de suscriptor para estos eventos. Sin embargo, si usa el Register-EngineEvent
cmdlet para suscribirse a un evento personalizado (para reenviar el evento o especificar una acción), Get-EventSubscriber
encontrará el suscriptor que Register-EngineEvent
genera.
La cola de eventos, las suscripciones de eventos y los eventos solo existen en la sesión actual. Si la cierra, la cola de eventos se descartará y la suscripción al evento se cancelará.