Get-EventSubscriber
Obtém os assinantes do evento na sessão atual.
Sintaxe
BySource (Predefinição)
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
ById
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Description
O cmdlet Get-EventSubscriber obtém os assinantes do evento na sessão atual.
Quando você se inscreve em um evento usando um cmdlet de evento Register, um assinante de evento é adicionado à sua sessão do Windows PowerShell e os eventos aos quais você se inscreveu são adicionados à sua fila de eventos sempre que são gerados. Para cancelar uma assinatura de evento, exclua o assinante do evento usando o cmdlet Unregister-Event.
Exemplos
Exemplo 1: Obter o subscritor do evento para um 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
Este exemplo usa um comando Get-EventSubscriber para obter o assinante do evento para um evento de timer.
O primeiro comando usa o cmdlet New-Object para criar uma instância de um objeto de timer. Ele salva o novo objeto de temporizador na variável $Timer.
O segundo comando usa o cmdlet Get-Member para exibir os eventos disponíveis para objetos de timer. O comando usa o parâmetro Type do cmdlet Get-Member com um valor de Event.
O terceiro comando usa o cmdlet Register-ObjectEvent para registrar o evento Elapsed no objeto de timer.
O quarto comando usa o cmdlet Get-EventSubscriber para obter o assinante do evento Elapsed.
Exemplo 2: Use o módulo dinâmico em PSEventJob na propriedade Action do assinante do evento
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
Este exemplo mostra como usar o módulo dinâmico no objeto PSEventJob na propriedade Action do assinante do evento.
O primeiro comando usa o cmdlet New-Object para criar um objeto de timer. O segundo comando define o intervalo do temporizador para 500 (milissegundos).
O terceiro comando usa o cmdlet Register-ObjectEvent para registrar o evento Elapsed do objeto timer. O comando inclui uma ação que manipula o evento. Sempre que o intervalo do temporizador decorre, um evento é gerado e os comandos na ação são executados. Nesse caso, o cmdlet Get-Random gera um número aleatório entre 0 e 100 e o salva na variável $Random. O identificador de origem do evento é Timer.Random.
Quando você usa um parâmetro
O quarto comando habilita o temporizador.
O quinto comando usa o cmdlet Get-EventSubscriber para obter o assinante do evento Timer.Random . Ele salva o objeto do assinante do evento na variável $Subscriber.
O sexto comando mostra que a propriedade Action do objeto de assinante de evento contém um objeto PSEventJob
O sétimo comando usa o cmdlet Format-List para exibir todas as propriedades do objeto PSEventJob do
Os comandos restantes usam o operador de chamada (&) para invocar o comando no módulo e exibir o valor da variável $Random. Você pode usar o operador call para invocar qualquer comando em um módulo, incluindo comandos que não são exportados. Nesse caso, os comandos mostram o número aleatório que está sendo gerado quando o evento Elapsed ocorre.
Para obter mais informações sobre módulos, consulte about_Modules.
Parâmetros
-Force
Indica que esse cmdlet obtém todos os assinantes de eventos, incluindo assinantes de eventos que estão ocultos usando o parâmetro SupportEvent de Register-ObjectEvent, Register-WmiEvent e Register-EngineEvent.
Propriedades dos parâmetros
| Tipo: | SwitchParameter |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | 1 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-SourceIdentifier
Especifica o valor da propriedade SourceIdentifier que obtém apenas os assinantes do evento. Por padrão, Get-EventSubscriber recebe todos os assinantes do evento na sessão. Curingas não são permitidos. Este parâmetro diferencia maiúsculas de minúsculas.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
BySource
| Position: | 0 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | True |
| Valor dos restantes argumentos: | False |
-SubscriptionId
Especifica o identificador de assinatura que esse cmdlet obtém. Por padrão, Get-EventSubscriber recebe todos os assinantes do evento na sessão.
Propriedades dos parâmetros
| Tipo: | Int32 |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | Id |
Conjuntos de parâmetros
ById
| Position: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | True |
| Valor dos restantes argumentos: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
Entradas
None
Não é possível canalizar a entrada para este cmdlet.
Saídas
PSEventSubscriber
Get-EventSubscriber retorna um objeto que representa cada assinante de evento.
Notas
O cmdlet New-Event, que cria um evento personalizado, não gera um assinante. Portanto, o cmdlet Get-EventSubscriber não encontrará um objeto de assinante para esses eventos. No entanto, se você usar o cmdlet Register-EngineEvent para se inscrever em um evento personalizado (para encaminhar o evento ou especificar uma ação), Get-EventSubscriber encontrará o assinante que Register-EngineEvent gera.
Eventos, assinaturas de eventos e a fila de eventos existem somente na sessão atual. Se você fechar a sessão atual, a fila de eventos será descartada e a assinatura do evento será cancelada.