Compartilhar via


Get-EventSubscriber

Obtém todos os assinantes do evento da sessão atual.

Sintaxe

Get-EventSubscriber [-SubscriptionId] <int> [-Force] [<CommonParameters>]

Get-EventSubscriber [[-SourceIdentifier] <string>] [-Force] [<CommonParameters>]

Descrição

O cmdlet Get-EventSubscriber obtém os assinantes do evento da sessão atual.

Quando você assina um evento usando um cmdlet de evento Register, um assinante do evento é adicionado à sua sessão do Windows PowerShell e os eventos assinados são adicionados à sua fila de eventos sempre que surgem. Para cancelar uma assinatura de evento, exclua o assinante do evento usando o cmdlet Unregister-Event.

Parâmetros

-Force

Obtém todos os assinantes do evento, inclusive assinantes de eventos que são ocultados usando o parâmetro SupportEvent de Register-ObjectEvent, Register-WmiEvent e Register-EngineEvent.

Necessário?

false

Posição?

2

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-SourceIdentifier <string>

Obtém apenas os assinantes do evento com o valor da propriedade SourceIdentifier especificado. Por padrão, o Get-EventSubscriber obtém todos os assinantes do evento da sessão. Os caracteres curinga não são permitidos. Esse parâmetro diferencia maiúsculas de minúsculas.

Necessário?

false

Posição?

1

Valor padrão

Todos os assinantes do evento

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

false

-SubscriptionId <int>

Obtém apenas o identificador de assinatura especificado. Por padrão, o Get-EventSubscriber obtém todos os assinantes do evento da sessão.

Necessário?

true

Posição?

1

Valor padrão

Nenhum

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

false

<CommonParameters>

Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.

Entradas e saídas

O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.

Entradas

Nenhum

Você não pode canalizar a entrada para este cmdlet.

Saídas

System.Management.Automation.PSEventSubscriber

Get-EventSubscriber retorna um objeto que representa cada assinante do evento.

Observações

O cmdlet New-Event, que cria um evento personalizado, não gera um assinante. Portanto, o cmdlet Get-EventSubscriber não localizará um objeto de assinante para esses eventos. Porém, se você usar o cmdlet Register-EngineEvent para assinar um evento personalizado (para encaminhar o evento ou para especificar uma ação), o Get-EventSubscriber localizará o assinante gerado pelo Register-EngineEvent.

Eventos, assinaturas de eventos e a fila de eventos só existem na sessão atual. Se você fechar a sessão atual, a fila de eventos será descartada e a assinatura de evento será cancelada.

Exemplo 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

Descrição
-----------
Esse exemplo usa um comando Get-EventSubscriber para obter o assinante do evento para um evento do 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 timer 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 o valor Event.

O terceiro comando usa o cmdlet Register-ObjectEvent no registro para o evento Elapsed no objeto de timer.

O quarto comando usa o cmdlet Get-EventSubscriber para obter o assinante do evento Elapsed.





Exemplo 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

Descrição
-----------
Esse 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 do timer. O segundo comando define o intervalo do timer para 500 (milissegundos).

O terceiro comando usa o cmdlet Register-ObjectEvent para registrar o evento Elapsed do objeto de timer. O comando inclui uma ação que trata o evento. Sempre que decorre um intervalo do timer, um evento é gerado e os comandos da 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ê usar um parâmetro Action em um comando Register-ObjectEvent, o comando retornará um objeto PSEventJob que representa a ação. 

O quarto comando habilita o timer.

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 do assinante do evento contém um objeto PSEventJob. Na verdade, ela contém o mesmo objeto PSEventJob que o comando Register-ObjectEvent retornou.

O sétimo comando usa o cmdlet Format-List para exibir todas as propriedades do objeto PSEventJob na propriedade Action em uma lista. O resultado revela que o objeto PSEventJob tem uma propriedade Module que contém um módulo de script dinâmico que implementa a ação.

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 de chamada para invocar qualquer comando em um módulo, inclusive 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.





Consulte também

Conceitos

Register-ObjectEvent
Register-EngineEvent
Register-WmiEvent
Unregister-Event
Get-Event
New-Event
Remove-Event
Wait-Event