Приложение для инвентаризации рабочих станций ЛВСРефераты >> Коммуникации и связь >> Приложение для инвентаризации рабочих станций ЛВС
6.7.2 Квалификаторы свойств
Квалификаторы свойств позволяют определить тип данного свойства (квалификатор CIMType), доступность его для чтения (квалификатор Read) и записи (квалификатор write) и т. п. С помощью метода Put_ () можно изменять значения только тех свойств, у которых имеется квалификатор write со значением true.
6.7.3 Квалификаторы методов
Квалификаторы методов могут описывать множество допустимых значений, которые будут возвращаться методом (квалификатор ValueMap), указывать права, которыми необходимо обладать для вызова метода (квалификатор Privileges) и т. д.
Выполнять можно только те методы, у которых имеется квалификатор Implemented со значением True.
6.8 События WMI
Одной из наиболее мощных возможностей WMI является так называемая подписка на извещения о событиях WMI, т. е. создание собственных обработчиков определенных событий WMI. При этом под событием WMI понимается какое-либо изменение в состоянии логического или физического компонента информационной системы, доступ к которому может быть получен с помощью WMI. Приведем несколько простых примеров событий WMI:
- снижение объема свободного дискового пространства на сервере до заданного значения. Вместо того, чтобы постоянно проверять заполненность жесткого диска на файловом сервере, можно установить подписку на извещение о событии WMI, которое произойдет, скажем, при уменьшении свободного пространства до 10% от общего объема диска. При этом можно, например, автоматически отправить администратору соответствующее сообщение по электронной почте или запустить определенный сценарий WMI для архивирования информации;
- появление в журнале событий определенного сообщения. В целях повышения безопасности администратор может зарегистрировать событие, которое будет происходить при занесении в журнал событий записи о неудачной регистрации пользователя. Реакцией на такое событие может служить отсылка сообщения по электронной почте администратору, что позволит оперативно предотвращать попытки несанкционированного доступа;
- запуск или завершение работы определенного приложения. Если на сервере выполняется какое-то важное приложение, то может потребоваться статистика о его работе. Зарегистрировав соответствующее событие WMI, можно автоматически записывать в текстовый файл или в журнал операций информацию о том, когда и кем приложение было запущено или остановлено. Используя же в качестве обработчика этих событий сценарий WMI, можно производить запись статистической информации в таблицы базы данных или в электронную таблицу Microsoft Excel.
Таким образом, мы видим, что механизм событий позволяет оперативно информировать администратора о различных проблемах (в том числе потенциальных) и автоматически выполнять определенные действия для решения этих проблем.
Роль WMI состоит в организации взаимодействия между провайдерами событий (event providers), которые формируют извещения о наступлении определенного события, и зарегистрированными подписчиками на эти извещения (регистрируются подписчики, которые являются потребителями событий (event consumers), также с помощью WMI).
События WMI разделяются на три типа (внутренние, внешние и события таймера), каждому из которых в репозитории CIM соответствует определенный класс-потомок абстрактного класса Event. Внешние события представлены классом ExtrinsicEvent, события таймера — классом TimerEvent, а внутренние — тремя разными классами ( NamespaceOperationEvent, ClassOperationEvent и InstanceOperationEvent). На рисунке 6.4 показана иерархия классов, соответствующих событиям WMI, для пространства имен CIMV2.
При наступлении какого-либо события WMI автоматически создает экземпляр того класса, которому соответствует это событие.
6.8.1 Внутренние события
Внутренние события позволяют контролировать изменения в состоянии тех управляемых ресурсов, которые представлены отдельным классом WMI и хранятся в CIM, а также изменения в структуре самого репозитория CIM — можно получать извещения о создании, изменении и удалении экземпляров классов, а также самих классов и пространств имен.
Рисунок6.4 - Классы, соответствующие
событиям WMI
Для администратора операционной системы наибольший практический интерес представляет, конечно, обработка событий, которые связаны с управляемыми ресурсами (таким событиям соответствуют классы, которые порождены от класса InstanceOperationEvent):
- создание нового экземпляра определенного класса (класс InstanceCreationEvent);
- модификация существующего экземпляра класса (класс InstanceModificationEvent);
- удаление экземпляра класса (класс InstanceDeletionEvent).
Для подписки на извещения о наступлении внутреннего события применяются запросы специального вида на языке WQL. Мы не будем подробно рассматривать синтаксис таких запросов, а лишь приведем два простых примера.
Скажем, для того чтобы получить в сценарии WSH извещение о запуске нового экземпляра Блокнота (notepad.exe), нужно с помощью метода ExecNotificationQuery класса SWbemServices выполнить следующий оператор WQL:
SELECT * FROM InstanceCreationEvent WITHIN 2 WHERE Targetlnstance
ISA 'Win32_Process' AND Targetlnstance.Name='notepad.exe'
Для обработки события, связанного с закрытием Блокнота, можно применить такой оператор:
SELECT * FROM InstanceDeletionEvent WITHIN 2 WHERE Targetlnstance ISA 'Win32_Process' AND Targetlnstance.Name='notepad.exe'
6.8.2 Внешние события
Если возникает необходимость контроля состояния какого-либо объекта, для которого в CIM не предусмотрено отдельного класса, то используются внешние события. Пример такого внешнего события — изменение значения определенного ключа в реестре (в репозитории CIM нет отдельного класса, соответствующего ключу в реестре, поэтому событие является внешним).
Для создания внешнего события, в отличие от внутреннего, необходимо, чтобы данное событие поддерживалось соответствующим провайдером WMI. В провайдере должен быть объявлен класс, который являлся бы потомком класса ExtrinsicEvent и описывал нужное событие. Например, в провайдере системного реестра определен объект RegistryKeyChangeEvent, с помощью которого происходит оповещение потребителей событий об изменениях, которые происходят с ключом реестра. Для подписки на извещения о внешнем событии из сценария WSH нужно с помощью метода Exec-NotificationQueryAsync класса SWbemServices выполнить асинхронный WQL-запрос специального вида. Например, для того чтобы следить за изменениями ключа Software\\Microsoft\Windows Script Host\TrustPolicy, с помощью которого можно задавать политику безопасности при работе с WSH, используется такой WQL-запрос:
SELECT * FROM RegistryKeyChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND
KeyPath='Software\\Microsoft\\Windows Script HostWTrustPolicy'
6.8.3 Событиятаймера