Register-WmiEvent

Подписывается на событие WMI.

Синтаксис

Register-WmiEvent
        [-Namespace <String>]
        [-Credential <PSCredential>]
        [-ComputerName <String>]
        [-Class] <String>
        [-Timeout <Int64>]
        [[-SourceIdentifier] <String>]
        [[-Action] <ScriptBlock>]
        [-MessageData <PSObject>]
        [-SupportEvent]
        [-Forward]
        [-MaxTriggerCount <Int32>]
        [<CommonParameters>]
Register-WmiEvent
        [-Namespace <String>]
        [-Credential <PSCredential>]
        [-ComputerName <String>]
        [-Query] <String>
        [-Timeout <Int64>]
        [[-SourceIdentifier] <String>]
        [[-Action] <ScriptBlock>]
        [-MessageData <PSObject>]
        [-SupportEvent]
        [-Forward]
        [-MaxTriggerCount <Int32>]
        [<CommonParameters>]

Описание

Командлет Register-WmiEvent подписывается на события инструментария управления Windows (WMI) на локальном компьютере или на удаленном компьютере.

При возникновении соответствующего события WMI оно добавляется в очередь событий в локальном сеансе, даже если событие инициировано на удаленном компьютере. Чтобы получить события в очереди событий, используйте Get-Event командлет.

Параметры можно использовать Register-WmiEvent для подписки на события на удаленных компьютерах и указания значений свойств событий, которые помогут определить событие в очереди. С помощью параметра Action можно указать действия, выполняющиеся при возникновении соответствующего события.

При подписке на событие к текущему сеансу добавляется подписчик события. Чтобы получить подписчиков событий в сеансе, используйте Get-EventSubscriber командлет. Чтобы отменить подписку, используйте Unregister-Event командлет, который удаляет подписчик события из сеанса.

В Windows PowerShell 3.0 появились новые командлеты модели CIM, выполняющие те же задачи, что и командлеты инструментария WMI. Командлеты модели CIM соответствуют стандартам WS-Management (WSMan) и CIM, что позволяет им использовать те же способы управления компьютерами под управлением Windows и других операционных систем. Вместо использования рекомендуется использовать Register-WmiEventкомандлет Register-CimIndicationEvent.

Примеры

Пример 1. Подписка на события, создаваемые с помощью класса

Эта команда подписывается на события, создаваемые с помощью класса Win32_ProcessStartTrace. Этот класс вызывает событие при запуске процесса.

Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"

Пример 2. Подписка на события создания процесса

Эта команда использует запрос для подписки на события создания экземпляра Win32_process.

$wmiParameters = @{
  Query = "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'"
  SourceIdentifier = "WMIProcess"
  MessageData = "Test 01"
  TimeOut = 500
}
Register-WmiEvent @wmiParameters

Пример 3. Использование действия в ответ на событие

В этом примере показано, как использовать действие в ответ на событие. В этом случае при запуске процесса все Start-Process команды в текущем сеансе записываются в XML-файл.

$action = { Get-History | where { $_.commandline -like "*start-process*" } | export-cliXml "commandHistory.clixml" }
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -Action $action

Id    Name            State      HasMoreData   Location  Command
--    ----            -----      -----------   --------  -------
1     ProcessStarted  NotStarted False                   get-history | where {...

При использовании параметра Action возвращает фоновое задание, Register-WmiEvent представляющее действие события. Для управления заданием можно использовать командлеты заданий , например Get-Job и Receive-Jobуправление заданием событий.

См. дополнительные сведения о заданиях.

Пример 4. Регистрация для событий на удаленном компьютере

Этот пример регистрируется для событий на удаленном компьютере Server01.

Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
Get-Event -SourceIdentifier "Start"

WMI возвращает события на локальный компьютер и сохраняет их в очередь событий в текущем сеансе. Чтобы получить события, выполните локальную Get-Event команду.

Параметры

-Action

Задает команды, которые обрабатывают события. Команды в параметре Action выполняются при возникновении события вместо отправки события в очередь событий. Заключите команды в фигурные скобки ({}) для создания блока скрипта.

Значение действия может включать $Eventпеременные , $EventSubscriberи $Sender$EventArgs$Args автоматические переменные, которые предоставляют сведения о событии в блок скрипта Action. Дополнительные сведения см. в статье about_Automatic_Variables.

При указании действия возвращает объект задания события, Register-WmiEvent представляющий это действие. Чтобы управлять заданием события, используйте командлеты, которые содержат существительное Job (командлеты Job).

Type:ScriptBlock
Position:101
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Class

Указывает событие, на которое вы подписываетесь. Введите класс WMI, который создает событие. В каждой команде требуется указать параметр Class или Query.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Задает имя компьютера, на котором выполняется команда. По умолчанию используется локальный компьютер.

Введите имя NetBIOS, IP-адрес или полное доменное имя компьютера. Чтобы указать локальный компьютер, введите имя компьютера, точку (.) или localhost.

Этот параметр не зависит от удаленного взаимодействия Windows PowerShell. Параметр ComputerName можно использовать, даже если компьютер не настроен для выполнения удаленных команд.

Type:String
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Указывает учетную запись пользователя с разрешением на выполнение этого действия. По умолчанию используется текущий пользователь.

Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential , например объект, созданный командлетом Get-Credential . При вводе имени пользователя этот командлет запрашивает пароль.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Forward

Указывает, что этот командлет отправляет события по данной подписке в сеанс на локальном компьютере. Этот параметр используется при регистрации событий, полученных на удаленном компьютере или в удаленном сеансе.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxTriggerCount

Указывает максимальное число триггеров.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MessageData

Указывает дополнительные данные, которые будут связаны с подпиской на событие. Значение этого параметра отображается в свойстве MessageData всех событий, связанных с этой подпиской.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Namespace

Задает пространство имен класса WMI.

Type:String
Aliases:NS
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Query

Указывает запрос на языке запросов WMI, определяющий класс событий инструментария WMI, например select * from __InstanceDeletionEvent.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-SourceIdentifier

Указывает имя, выбранное для подписки. Выбранное имя должно быть уникальным в текущем сеансе. Значение по умолчанию — идентификатор GUID, который назначает Windows PowerShell.

Значение этого параметра отображается в значении свойства SourceIdentifier объекта подписчика и всех объектов событий, связанных с этой подпиской.

Type:String
Position:100
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SupportEvent

Указывает, что этот командлет скрывает подписку на событие. Этот параметр используется, если текущая подписка является частью более сложного механизма регистрации событий и не должна обнаруживаться независимым образом.

Чтобы просмотреть или отменить подписку, созданную с помощью параметра SupportEvent, укажите параметр Get-EventSubscriber Force командлетов.Unregister-Event

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Timeout

Указывает время ожидания выполнения команды в Windows PowerShell.

Значение по умолчанию — 0 (ноль) означает, что времени ожидания нет, из-за чего Windows PowerShell ожидает команды бессрочно.

Type:Int64
Aliases:TimeoutMSec
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

None

Нельзя передать объекты в этот командлет с помощью конвейера.

Выходные данные

None

Этот командлет не формирует никаких выходных данных.

Примечания

Чтобы использовать этот командлет в Windows Vista или более поздней версии ОС Windows, запустите Windows PowerShell, используя параметр "Запуск от имени администратора".

События, подписки на события и очередь событий существуют только в текущем сеансе. Если закрыть текущий сеанс, очередь событий удаляется, а подписка на событие отменяется.