|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
16.7 Работа с событиямиСобытия WMI в скриптах VBScript, WMI Event Service, CIM Event Registration, Subscriber Builder, подписка (subscription), получатель события (Event Consumer), временные получатели, метод ExecNotificationQuery(), утилита mofcomp, WMI Event Viewer 16.7.1 Архитектура работы с событиями в WMIВнутри службы WMI реализована служба работы с событиями - WMI Event Service. Эта служба поддерживает фильтрацию событий и обеспечение реакции на них. Скрипт, приложение или просто администратор (при помощи утилиты CIM Event Registration) могут зарегистрировать подписку на события, выступив в роли построителя подписки - Subscriber Builder. События представляются в виде системного класса _Event, на появление которых реагирует подписка. Подписка (subscription) - определение события, представляющего интерес для построителя события. Фактически подписка - это требование для службы WMI выполнить определенные действия, если произойдет событие, подпадающее под условие подписки. Подписка создается при помощи специального WQL-запроса (SELECT). Настоятельно рекомендуется определить в этом запросе максимально строгие условия - чтобы избежать обработки ненужных вам событий. Еще один компонент архитектуры работы с событиями - получатель события, Event Consumer. Этот тот блок кода в скрипте (или приложении), который получает уведомление о наступлении события и реагирует на него. Получатели могут быть временными и постоянными. Временные получатели - это получатели, которым будут передаваться оповещения о событиях только тогда, когда этот скрипт/приложение запущен. Временные получатели обычно регистрируют свои события при помощи вызова метода ExecNotificationQuery. Информация о постоянных получателях хранится в репозитарии CIM. При наступлении события служба WMI проверяет, запущено ли требуемое приложение/скрипт, которое должно быть получателем. Если оно запущено, то оно оповещается, а если нет - то вначале служба WMI производит запуск этого приложения. В WMI SDK поставляется такой постоянный получатель - WMI Event Viewer Tool. Например, чтобы зарегистрировать постоянного получателя событий WMI (например, для появления новых сообщений в журнале приложений), нужно выполнить следующие действия:
mofcomp c:\winnt\system32\wbem\eviewer.mof (файл eviewer.mof устанавливается вместе с WMI SDK)
Select * from __InstanceCreationEvent Where TargetInstance ISA 'Win32_NTLogEvent')
Для проверки созданной вами конфигурации достаточно выполнить короткий скрипт, который сгенерирует сообщений в журнал событий приложений, например: Dim oShell Set oShell = CreateObject("Wscript.Shell") oShell.LogEvent 0, "TestMessage" Если все сделано правильно, то появится окно WMI Event Viewer с информацией о происшедшем событии. Про временных получателей, которые используются чаще, будет рассказано ниже.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||