Get-EventSubscriber
Obtém os assinantes do evento na sessão atual.
Syntax
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Description
O Get-EventSubscriber
cmdlet obtém os assinantes do evento na sessão atual.
Quando você assina um evento por meio de um cmdlet do registro de eventos, 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 Unregister-Event
cmdlet.
Exemplos
Exemplo 1: Obter o assinante do evento para um evento de timer
Este exemplo usa um Get-EventSubscriber
comando para obter o assinante do evento para um evento de timer.
O primeiro comando usa o New-Object
cmdlet para criar uma instância de um objeto timer. Ele salva o novo objeto timer na $Timer
variável.
O segundo comando usa o Get-Member
cmdlet para exibir os eventos disponíveis para objetos de timer. O comando usa o parâmetro Type do Get-Member
cmdlet com um 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
O terceiro comando usa o Register-ObjectEvent
cmdlet para registrar o evento Elapsed no objeto timer.
O quarto comando usa o Get-EventSubscriber
cmdlet para obter o assinante do evento para o evento Elapsed .
Exemplo 2: Usar o módulo dinâmico em PSEventJob na propriedade Action do assinante do evento
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 New-Object
cmdlet para criar um objeto timer. O segundo comando define o intervalo do temporizador para 500 (milissegundos).
$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}
O terceiro comando usa o Register-ObjectEvent
cmdlet para registrar o evento Elapsed do objeto timer. O comando inclui uma ação que manipula o evento. Sempre que o intervalo de timer expira, um evento é gerado e executar os comandos na ação. Nesse caso, o Get-Random
cmdlet gera um número aleatório entre 0 e 100 e o salva na $Random
variável. O identificador de origem do evento é Timer.Random.
Quando você usa um parâmetro Action em um Register-ObjectEvent
comando, o comando retorna um objeto PSEventJob que representa a ação.
O quarto comando habilita o temporizador.
O quinto comando usa o Get-EventSubscriber
cmdlet para obter o assinante do evento Timer.Random . Ele salva o objeto de assinante de $Subscriber
evento na variável.
O sexto comando mostra que a propriedade Action do objeto de assinante de evento contém um objeto PSEventJob . Na verdade, ele contém o mesmo objeto PSEventJob que o Register-ObjectEvent
comando retornou.
O sétimo comando usa o Format-List
cmdlet 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. É possível utilizar o operador de chamada 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 ocorre o evento Elapsed (decorrido).
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 ocultos usando o parâmetro SupportEvent de Register-ObjectEvent
, Register-WmiEvent
e Register-EngineEvent
.
Type: | SwitchParameter |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceIdentifier
Especifica o valor da propriedade SourceIdentifier que obtém apenas os assinantes do evento. Por padrão, Get-EventSubscriber
obtém todos os assinantes do evento na sessão. Caracteres curinga não são permitidos. Este parâmetro diferencia maiúsculas e minúsculas.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SubscriptionId
Especifica o identificador de assinatura que esse cmdlet obtém. Por padrão, Get-EventSubscriber
obtém todos os assinantes do evento na sessão.
Type: | Int32 |
Aliases: | Id |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Entradas
None
Não é possível canalizar objetos para esse cmdlet.
Saídas
Esse cmdlet retorna um objeto PSEventSubscriber para cada assinante de evento.
Observações
O New-Event
cmdlet, que cria um evento personalizado, não gera um assinante. Portanto, o Get-EventSubscriber
cmdlet não localizará um objeto de assinante para esses eventos. No entanto, se você usar o Register-EngineEvent
cmdlet 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 evento e a fila de eventos existem apenas na sessão atual. Se você fechar a sessão atual, a fila de eventos será descartada e a inscrição do evento será cancelada.
Links Relacionados
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de