Получает подписчики на события в текущем сеансе.
Синтаксис
Get-EventSubscriber [-SubscriptionId] <int> [-Force] [<CommonParameters>] Get-EventSubscriber [[-SourceIdentifier] <string>] [-Force] [<CommonParameters>]
Описание
Командлет Get-EventSubscriber получает подписчики на события в текущем сеансе.
При подписке на событие с помощью командлета регистрации событий в сеанс Windows PowerShell добавляется подписчик на событие, а события, на которые подписался пользователь, добавляются в очередь событий по мере возникновения. Чтобы отменить подписку на событие, необходимо удалить подписчик с помощью командлета Unregister-Event.
Параметры
-Force
Получает все подписчики на события, включая подписчики на события, которые скрыты с помощью параметра SupportEvent командлетов Register-ObjectEvent, Register-WmiEvent и Register-EngineEvent.
Обязательно? |
false |
Позиция? |
2 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-SourceIdentifier <string>
Получает только подписчики на события с заданным значением свойства SourceIdentifier. По умолчанию командлет Get-EventSubscriber получает все подписчики на события в сеансе. Подстановочные знаки запрещены. Этот параметр указывается с учетом регистра.
Обязательно? |
false |
Позиция? |
1 |
Значение по умолчанию |
All event subscribers |
Принимать входные данные из конвейера? |
true (ByPropertyName) |
Принимать подстановочные знаки? |
false |
-SubscriptionId <int>
Получает только заданный идентификатор подписки. По умолчанию командлет Get-EventSubscriber получает все подписчики на события в сеансе.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
нет |
Принимать входные данные из конвейера? |
true (ByPropertyName) |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
None Передать входные данные этому командлету по конвейеру невозможно. |
Выходные данные |
System.Management.Automation.PSEventSubscriber Командлет Get-EventSubscriber возвращает объект, представляющий каждый подписчик на события. |
Примечания
Командлет New-Event, создающий пользовательское событие, не создает подписчик. Поэтому командлет Get-EventSubscriber не сможет обнаружить объект подписчика для таких событий. Но если подписаться на пользовательское событие с помощью командлета Register-EngineEvent (чтобы перенаправить событие или задать действие), командлет Get-EventSubscriber обнаружит подписчик, созданный командлетом Register-EngineEvent.
События, подписки на события и очередь событий существуют только в рамках текущего сеанса. Если завершить текущий сеанс, очередь событий будет очищена и подписка на события будет отменена.
Пример 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 Описание ----------- В этом примере используется команда Get-EventSubscriber для получения подписчика на событие таймера. Первая команда создает экземпляр объекта таймера с помощью командлета New-Object. Новый объект таймера сохраняется в переменной $timer. Вторая команда отображает события, доступные для объектов таймера, с помощью командлета Get-Member. В этой команде используется параметр Type командлета Get-Member со значением Event. Третья команда регистрирует событие Elapsed объекта таймера с помощью командлета Register-ObjectEvent. Четвертая команда использует командлет Get-EventSubscriber для получения подписчика на событие Elapsed.
Пример 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 Описание ----------- В этом примере показано использование динамического модуля в объекте PSEventJob свойства Action подписчика на событие. Первая команда с помощью командлета New-Object создает объект таймера. Вторая команда устанавливает интервал времени таймера равным 500 (миллисекундам). Третья команда регистрирует событие Elapsed объекта таймера с помощью командлета Register-ObjectEvent. Она содержит действие, обрабатывающее событие. Когда интервал времени таймера истекает, появляется событие, и выполняются команды, содержащиеся в действии. В этом случае командлет 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.