Get-EventSubscriber
Получает подписчики на событие в текущем сеансе.
Синтаксис
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Описание
Командлет Get-EventSubscriber
получает подписчиков событий в текущем сеансе.
При подписке на событие с помощью командлета регистрации событий в сеанс Windows PowerShell добавляется подписчик на событие, а события, на которые подписался пользователь, добавляются в очередь событий по мере возникновения. Чтобы отменить подписку на события, удалите подписчик события с помощью командлета Unregister-Event
.
Примеры
Пример 1. Получение подписчика события таймера
В этом примере используется Get-EventSubscriber
команда для получения подписчика события таймера.
Первая команда использует New-Object
командлет для создания экземпляра объекта таймера. Новый объект таймера сохраняется в переменной $Timer
.
Вторая команда использует Get-Member
командлет для отображения событий, доступных для объектов таймера. Команда использует параметр Type командлета Get-Member
со значением 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
Третья команда использует Register-ObjectEvent
командлет для регистрации события Elapsed в объекте таймера.
Четвертая команда использует Get-EventSubscriber
командлет , чтобы получить подписчик события для события Затраченного .
Пример 2. Использование динамического модуля в PSEventJob в свойстве Action подписчика события
В этом примере показано, как использовать динамический модуль в объекте PSEventJob в свойстве Action подписчика события.
Первая команда использует New-Object
командлет для создания объекта таймера. Вторая команда устанавливает интервал времени таймера равным 500 (миллисекундам).
$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}
Третья команда использует Register-ObjectEvent
командлет для регистрации события Elapsed объекта таймера. Она содержит действие, обрабатывающее событие. Когда интервал времени таймера истекает, появляется событие и выполняются команды, содержащиеся в действии. В этом случае Get-Random
командлет создает случайное число от 0 до 100 и сохраняет его в переменной $Random
. Идентификатор источника события — Timer.Random.
При использовании параметра Action в Register-ObjectEvent
команде команда возвращает объект PSEventJob , представляющий действие.
Четвертая команда включает таймер.
Пятая команда использует Get-EventSubscriber
командлет , чтобы получить подписчик события Timer.Random . Объект подписчика события сохраняется в переменной $Subscriber
.
Шестая команда показывает, что свойство Action объекта подписчика события содержит объект PSEventJob . Фактически он содержит тот же объект PSEventJob , что Register-ObjectEvent
и возвращенная команда.
Седьмая Format-List
команда использует командлет для отображения всех свойств объекта PSEventJob в свойстве Action в списке. Результат показывает, что объект PSEventJob имеет свойство Module, содержащее модуль динамического скрипта, реализующий действие.
Остальные команды используют оператор вызова (&
) для вызова команды в модуле и отображения значения переменной $Random. Оператор вызова можно использовать для вызова любой команды в модуле, включая команды, которые не экспортируются. В этом случае команды показывают случайное число, создаваемое при появлении события Elapsed.
Дополнительные сведения о модулях см. в разделе about_Modules.
Параметры
-Force
Указывает, что этот командлет получает всех подписчиков событий, включая подписчиков для событий, скрытых с помощью параметра Register-ObjectEvent
SupportEvent для , Register-WmiEvent
и Register-EngineEvent
.
Type: | SwitchParameter |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceIdentifier
Задает значение свойства SourceIdentifier , которое получает только подписчиков событий. По умолчанию Get-EventSubscriber
получает всех подписчиков событий в сеансе. Использовать подстановочные знаки запрещено. Этот параметр чувствителен к регистру.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SubscriptionId
Указывает идентификатор подписки, который получает этот командлет. По умолчанию Get-EventSubscriber
получает всех подписчиков событий в сеансе.
Type: | Int32 |
Aliases: | Id |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Входные данные
None
В этот командлет нельзя передать входные данные.
Выходные данные
Get-EventSubscriber
возвращает объект , представляющий каждого подписчика события.
Примечания
Командлет New-Event
, который создает пользовательское событие, не создает подписчика. Get-EventSubscriber
Поэтому командлет не найдет объект подписчика для этих событий. Однако если вы используете Register-EngineEvent
командлет для подписки на пользовательское событие (для пересылки события или для указания действия), Get-EventSubscriber
будет находиться подписчик, который Register-EngineEvent
создает.
События, подписки на события и очередь событий существуют только в текущем сеансе. Если закрыть текущий сеанс, очередь событий удаляется, а подписка на событие отменяется.