
|
-
Учет компьютеров, оборудования и
IT инфраструктуры
Программа инвентаризации компьютеров ведущая учет: |
-
компьютеров, оборудования, оргтехники, сетей |
- программ и
лицензий |
- комплектующих
и запчастей |
- расходных материалов, канцелярии,
мебели, инвентаря |
|
 |
|
|
Инвентаризация компьютеров в сети через WMI
Понятие о WMI
Технология WMI (Windows Management Instrumentation) - это одна из базовых
технологий Microsoft для централизованного управления и слежения за работой
различных частей компьютерной сети под управлением Windows. WMI пригодится
прежде всего администраторам Windows, а также разработчикам программного
обеспечения. Технология WMI - это реализация модели управления предприятием на
базе Web (Web-Based Enterprise Management, WBEM), которая в свою очередь
разработана при участии не только компании Microsoft, но и целого ряда других
компаний. Задачей WBEM является разработка таких стандартов удалённого
управления информационной средой предприятия, которые не зависят от конкретного
оборудования, сетевой инфраструктуры, операционной системы, файловой системы и
т.д. В рамках WBEM была предложена схема Common Information Model (CIM), которая
представляет структуру компьютерной системы в виде единой расширяемой
объектно-ориентированной модели и поддерживается в WMI.
Можно автоматизировать работу с WMI с помощью сценариев Windows Script Host
(WSH), используя при этом совместно с WMI и другие ActiveX-технологии (например,
ActiveX Data Object (ADO) для доступа к базам данных или Active Directory
Service Interface (ADSI) для работы со службами каталогов), получив таким
образом мощный и удобный инструмент для системного администратора и
программиста. Все примеры сценариев WSH в настоящей статье будут приводиться на
языке VBScript. Имейте в виду, что сценарии, приведённые в настоящей статье,
написаны не для практического применения, а лишь для иллюстрации излагаемого
материала (например, в сценариях отсутствует какая-либо обработка ошибок, что
совершенно не годится для настоящих рабочих сценариев). Кроме того, вы не
найдёте здесь много готовых рецептов для решения конкретных задач
администрирования, поскольку цель приведённых примеров - опять же, лишь
ознакомление со структурой и возможностями WMI.
Технология WMI реализована для всех 32-разрядных версий Windows, начиная с
Windows 95 OSR 2 и заканчивая Windows Server 2003. В операционных системах
Windows Me/2000/XP и Windows Server 2003 никакой дополнительной установки WMI не
требуется, здесь уже функционирует ядро WMI версии 1.5. Для операционных систем
Windows 9x/NT необходимо обновить ядро WMI до версии 1.5. Необходимый для этого
инсталяционный файл wmicore.exe можно скачать с сервера Microsoft.
Общая структура WMI
WMI состоит из следующих частей:
- Менеджер объектов CIM (Common Information Model Object Manager, CIMOM), который
обеспечивает обработку всех запросов конечных приложений к WMI и доставку
информации от WMI к конечным приложениям. Все провайдеры WMI (см. ниже) должны
быть зарегистрированы с помощью CIMOM для правильного перенаправления полученных
от конечного приложения запросов к нужному провайдеру. Функциональность CIMOM
обеспечивает файл winmgmt.exe,
который находится в каталоге %SystemRoot%\System32\Wbem\.
Этот файл запускается как сервис.
- Репозиторий (хранилище классов) CIM. Объекты-экземпляры таких классов создаются
провайдером WMI (см. ниже) по запросу потребителя. В Windows Server 2003 и
Windows XP репозиторий физически располагается в каталоге %SystemRoot%\System32\Wbem\Repositiry\FS\ в файлах objects.data (репозиторий), index.btr (индексный файл), index.map и object.map (файлы контроля над транзакциями). В
более ранних версиях Windows репозиторий располагается в файле cim.rep.
- Провайдеры WMI, которые скрывают детали внутренней реализации управляемых
объектов, позволяя CIMOM обращаться к этим объектам единообразно, используя WMI
API. Фактически провайдеры являются COM-серверами, которые представлены
dll-библиотеками в каталоге %SystemRoot%\System32\Wbem\.
WMI включает множество встроенных провайдеров, которые предназначены для
получения данных из различных источников, например, журналов событий, системного
реестра и т.д.
- Библиотека поддержки сценариев (WMI scripting library), которая располагается в
файле wbemdisp.dll в каталоге %SystemRoot%\System32\Wbem\.
-
Ваше приложение может обратиться с запросом к любой удалённой машине, на которой
установлен WMI. При этом происходит соединение с CIMOM на удалённой машине,
после чего запросы обрабатываются точно также, как и на локальной машине. CIMOM
проверяет права пользователя, который пытается воспользоваться сервисами WMI на
локальном или удалённом компьютере. Потребители WMI (конечные приложения) могут
обращаться к управляемым объектам с помощью специального языка запросов WMI
Query Language (WQL). CIMOM позволяет создавать обработчики событий управляемых
объектов (например, снижение объёма дискового пространства до заданного
значения, запуск определённого процесса и т.п.). Для этого CIMOM периодически
опрашивает нужный объект (интервал опроса задаётся в конечном приложении) и в
случае необходимости генерирует событие.
-
Количество классов CIM зависит от версии операционной системы. Например, для
Windows Server 2003 в CIM хранится около 5000 классов. Классы, составляющие CIM,
находятся в иерархической зависимости друг от друга, и классы-потомки могут
наследовать, переопределять и добавлять свойства родительских классов. Классы
CIM группируются в пространства
имён (namespaces), которые упорядочены иерархически. Корневое пространство
имён обозначается как Root. В
любом варианте установки WMI имеются четыре пространства имён, которые находятся
на один уровень ниже корневого пространства имён: CIMV2, Default, Security и WMI.
-
Общие сведения о классах WMI
-
Все классы внутри одного пространства должны иметь уникальные имена (при этом
имена классов из разных пространств могут совпадать). Класс не может иметь
предка или потомка из другого пространства имён.
-
Полный путь к классу CIM имеет следующую структуру:
\\ComputerName\Namespace:ClassName.KeyProperty1=Value1, KeyProperty2=Value2 ...
-
Здесь:
- ComputerName - сетевое имя компьютера. Для задания локального компьютера можно
использовать символ ".".
- Namespace - название пространства имён.
- ClassName - имя класса.
- KeyProperty1=Value1, KeyProperty2=Value2 ... - список ключевых пар
"свойство-значение" объекта.
-
Например, экземпляр класса Win32_Process из пространства имён CIMV2 с
идентификатором 4, запущенный на локальной машине, определяет такой путь:
\\.\Root\CIMV2:Win32_Process.Handle=4
-
Всякому ресурсу, управляемому с помощью WMI, соответствует свой класс. Каждый
класс имеет свойства, методы и квалификаторы. Также свои квалификаторы могут
быть у каждого свойства и метода.
-
Типы классов по способу хранения информации об управляемых ресурсах:
- Абстрактный класс (abstract class) - шаблон для образования классов-потомков
(абстрактных и неабстрактных), не может использоваться для получения экземпляра
управляемого ресурса.
- Статический класс (static class) - моделирует данные, которые физически хранятся
в репозитории CIM (например, данные о собственных настройках WMI). Доступ к
экземплярам статических классов осуществляется без помощи каких-либо
провайдеров.
- Динамический класс (dynamic class) - моделирует данные управляемого ресурса
через соответствующего провайдера.
-
Ассоциативный класс (association class) - это класс, который описывает
логическую связь между классами или управляющими ресурсами. Может быть
абстрактным, статическим или динамическим.
-
Типы классов по принадлежности к информационным моделям:
- Системные классы - служат для задания конфигурации и выполнения внутренних
функций WMI (обеспечение безопасности, регистрация провайдеров, подписка на
события и пр.). Могут быть абстрактными или статическими. Имена всех системных
классов начинаются с символов "__" (двойное подчёркивание).
- Классы модели ядра (core model) - абстрактные классы, которые обеспечивают
интерфейс со всеми областями управления (например, абстрактный класс
CIM_LogicalElement, который описывает логический управляемый ресурс, например,
файл или каталог). Имена таких классов начинаются с префикса "CIM_".
- Классы общей модели (common model) - классы для специфических задач управления,
но не зависящие от версии операционной системы. Имена таких классов тоже
начинаются с префикса "CIM_".
- Классы модели расширения (extension model) - классы для специфических задач
управления. Например, классы, соответствующие ресурсам среды Win32, начинающиеся
с префикса "Win32_".
-
Так как класс не может иметь предка или потомка из другого пространства имён, в
различных пространствах имён находятся одни и те же классы модели ядра и общей
модели.
-
Свойства классов используются для однозначной идентификации экземпляра класса,
представляющего конкретный управляемый ресурс, а также для описания текущего
состояния этого ресурса. В основном в WMI свойства классов доступны только для
чтения, но значения определённых свойств некоторых классов можно изменять
методом Put_(). Возможность
изменения конкретного свойства может зависеть от версии операционной системы.
Чтобы узнать, является ли свойство доступным для записи, можно проверить
значение квалификатора write этого свойства (о квалификаторах см.
ниже).
-
Методы класса позволяют выполнить те или иные действия над управляемым ресурсом,
которому соответствует этот класс. Так как не над каждым ресурсом можно
производить какие-либо операции, то не у всякого класса есть методы.
-
Квалификаторы содержат дополнительную информацию о классе, свойстве или методе,
в котором они определены.
-
Квалификаторы классов предоставляют информацию о классе в целом, например, тип
класса (квалификаторы Abstract, Dynamic, Association, которые могут принимать
булевы значения), имя провайдера класса (квалификатор Provider), информацию о
том, поддерживает ли класс создание, уничтожение, изменение экземпляров
(квалификаторы SupportsCreate, SupportsDelete, SupportsUpdate которые могут
принимать булевы значения), UUID класса (квалификатор UUID), названия методов
создания, уничтожения экземпляров (квалификаторы CreateBy, DeleteBy) и т.п.
-
Квалификаторы свойств позволяют определить тип данного свойства (квалификатор
CIMType), доступность для чтения (квалификатор Read), доступность для записи
(квалификатор Write), набор допустимых значений для свойства (квалификатор
ValueMap) и т.п.
-
Квалификаторы методов могут описывать множество значений, которые будут
возвращаться методом (квалификатор ValueMap), права, которые необходимы для
вызова метода (квалификатор Privileges) и т.п. Выполнять можно только те методы,
у которых есть квалификатор Implemented со значением True.
-
Общие сведения о событиях в WMI
-
Одной из наиболее мощных возможностей WMI является так называемая подписка на
извещения о событиях WMI, т.е. создание собственных обработчиков определённых
событий WMI. Примерами событий могут послужить снижение объёма дискового
пространства на сервере до заданного значения, появление в журнале событий
определённого сообщения, запуск или завершение работы определённого приложения и
т.д.
-
События в WMI разделяются на внутренние, внешние и события таймера. Внешние
события представлены классом __ExtrinsicEvent,
события таймера - классом __TimerEvent,
а внутренние события - классами __NamespaceOperationEvent,
__ClassOperationEvent и __InstanceOperationEvent. При наступлении события
WMI автоматически создаёт экземпляр того класса, которому соответствует это
событие.
-
Внутренние события позволяют контролировать изменения в состоянии тех
управляемых ресурсов, которые представлены отдельным классом WMI, а также
изменения в структуре самого репозитория CIM. Событиям, которые связаны с
управляемыми ресурсами, соответствуют классы, которые порождены от класса __InstanceOperationEvent. Это
классы __InstanceCreationEvent,
__InstanceModificationEvent и __InstanceDeleionEvent, отвечающие за
создание, модификацию и удаление экземпляра класса.
-
Для подписки на извещения о внутренних событиях применяются запросы специального
вида на языке WQL.
-
Если возникает необходимость контроля состояния какого-либо объекта, для
которого в CIM не предусмотрено отдельного класса, используются внешние события.
Пример внешнего события - изменение значения определённого ключа в реестре. Для
создания внешнего события необходимо, чтобы данное событие поддерживалось
соответствующим провайдером WMI.
-
Для подписки на извещения о внешнем событии из сценария WSH нужно с помощью
метода ExecNotificationQueryAsync класса SWbemServices выполнить асинхронный WQL-запрос
специального вида.
-
События таймера могут происходить один раз в определённое время или несколько
раз через заданные интервалы времени, что настраивается самим потребителем
событий.
-
Потребители событий могут быть временными и постоянными.
-
Временные потребители событий - это приложения, которые получают извещения о
событиях только во время своей активности. Такими потребителями могут быть
сценарии WSH.
-
Постоянные потребители событий позволяют зарегистрировать нужное событие
непосредственно в репозитории CIM, после чего извещения об этом событии будут
формироваться постоянно, до тех пор, пока событие не будет удалено из CIM явным
образом. Перезагрузка компьютера не удаляет такое событие.
-
ВФ.
- .
|
|
Copyright © 2006-2023 YuKoSoft
учет компьютеров и оборудования на предприятии
|
|
|