Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Программирование для администраторов
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

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 (например, для появления новых сообщений в журнале приложений), нужно выполнить следующие действия:

  • записать информацию о приложении Event Viewer в репозитарий CIM. Для этого необходимо выполнить в командной строке команду

mofcomp c:\winnt\system32\wbem\eviewer.mof

(файл eviewer.mof устанавливается вместе с WMI SDK)

  • зарегистрировать нового Event Consumer для службы WMI. Для этого необходимо открыть WMI Event Registration, подключиться к предлагаемому по умолчанию пространству имен root\cimv2 и в ниспадающем списке слева выбрать Consumers. Далее раскрыть контейнер _EventConsumer -> EventViewerConsumer, щелкнуть правой кнопкой мыши по EventViewerConsumer и в контекстном меню выбрать New Instance. Для создаваемого экземпляра достаточно заполнить только поле Name. После нажатия OK созданный получатель появится в дереве Event Registration.
  • затем создать фильтр для интересующего нас события. Для этого в ниспадающем списке нужно выбрать Filters, щелкнуть правой кнопкой мыши по строке _EventFilter и точно так же в контекстном меню выбрать New Instance. Для создаваемого объекта фильтра нужно заполнить следующие поля:
    • Name (например, TestFilter)
    • Query (например, для перехвата событий журнала приложений -

Select * from __InstanceCreationEvent Where TargetInstance ISA 'Win32_NTLogEvent')

    • QueryLanguage - WQL
  • последнее, что осталось сделать - зарегистрировать для этого фильтра приемник события. Для этого в правой части экрана щелкните правой кнопкой мыши по созданному вами объекту получателя и в контекстном меню выберите Register. В столбце Reg должен появиться зеленый флажок: получатель и фильтр настроены для приемы событий.

Для проверки созданной вами конфигурации достаточно выполнить короткий скрипт, который сгенерирует сообщений в журнал событий приложений, например:

Dim oShell

Set oShell = CreateObject("Wscript.Shell")

oShell.LogEvent 0, "TestMessage"

Если все сделано правильно, то появится окно WMI Event Viewer с информацией о происшедшем событии.

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

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 

 
© 2004-2008, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru