Учет компьютеров, оборудования и 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.Общая структура WMIWMI состоит из следующих частей:

Ваше приложение может обратиться с запросом к любой удалённой машине, на которой установлен 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 … 

Здесь:

Например, экземпляр класса Win32_Process из пространства имён CIMV2 с идентификатором 4, запущенный на локальной машине, определяет такой путь:
\\.\Root\CIMV2:Win32_Process.Handle=4 

Всякому ресурсу, управляемому с помощью WMI, соответствует свой класс. Каждый класс имеет свойства, методы и квалификаторы. Также свои квалификаторы могут быть у каждого свойства и метода.Типы классов по способу хранения информации об управляемых ресурсах:

Ассоциативный класс (association class) — это класс, который описывает логическую связь между классами или управляющими ресурсами. Может быть абстрактным, статическим или динамическим.Типы классов по принадлежности к информационным моделям:

Так как класс не может иметь предка или потомка из другого пространства имён, в различных пространствах имён находятся одни и те же классы модели ядра и общей модели.Свойства классов используются для однозначной идентификации экземпляра класса, представляющего конкретный управляемый ресурс, а также для описания текущего состояния этого ресурса. В основном в 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 явным образом. Перезагрузка компьютера не удаляет такое событие.ВФ..