Поделиться через


Register-WmiEvent

Подписывается на событие инструментария управления Windows (WMI).

Синтаксис

class (По умолчанию)

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

query

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

Описание

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

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

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

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

Новые командлеты Common Information Model (CIM), представленные в Windows PowerShell 3.0, выполняют те же задачи, что и командлеты 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-Object { $_.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управление заданием событий.

Дополнительные сведения см. в разделе about_Jobs.

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

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

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

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

Параметры

-Action

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

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

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

Свойства параметров

Тип:ScriptBlock
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:101
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Class

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

Свойства параметров

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

class
Position:0
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-ComputerName

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

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

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

Свойства параметров

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:CN

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Credential

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

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

Свойства параметров

Тип:PSCredential
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Forward

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

Свойства параметров

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-MaxTriggerCount

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

Свойства параметров

Тип:Int32
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-MessageData

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

Свойства параметров

Тип:PSObject
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Namespace

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

Свойства параметров

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:НС

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Query

Задает запрос на языке запросов WMI (WQL), который определяет класс событий WMI, например select * from __InstanceDeletionEvent.

Свойства параметров

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

query
Position:0
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-SourceIdentifier

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

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

Свойства параметров

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:100
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-SupportEvent

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

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

Свойства параметров

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Timeout

Указывает, сколько времени Windows PowerShell ожидает завершения этой команды.

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

Свойства параметров

Тип:Int64
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:TimeoutMSec

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

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

None

Невозможно передать объекты в этот командлет.

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

None

Этот командлет не создает выходные данные.

Примечания

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

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