Это инструмент от для дебага WMI — он позволяет просматривать классы, пространства имен, методы. Тулза довольно старая, на сайте MS её уже не найти (раньше поставлялась в составе WMI SDK).
Скачать WMI Tools: 5Мб
После установки WMI SDK, надо добавить в файл studio.htm, в секцию head следующий код:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
По умолчанию файл находится в \Program Files (x86)\WMI Tools\
Работает только в Internet Explorer.
Отправить
Твитнуть
Поделиться
Поделиться
Запинить
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Sign up
Appearance settings
В прошлой статье мы познакомились с внешним видом приложения WMI CIM Studio, теперь настало время изучить функциональные возможности данного приложения по работе с Windows Management Instrumentation. А именно: работу с классами, экземплярами классов, квалификаторами классов, их свойств и методов.
Также рассмотрим процесс работы со свойствами классов и объектов.
Содержание
- Окно поиска классов WMI (Search for Class)
- Просмотр экземпляров класса (Instances)
- Работа с квалификаторами класса или объекта
- Работа со свойствами класса или объекта
Окно поиска классов WMI (Search for Class)
Для того, что бы найти нужный класс WMI в окне проводника нужно нажать кнопку с пиктограммой Search for Class, после чего будет выведено диалоговое окно Search for Class.
В диалоговом окне отображается текстовое поле для ввода искомого класса WMI (смотрите статью «Классы WMI, пространство имен и CIM«), для запуска поиска нужно нажать на кнопку рядом с надписью Go! Список найденных совпадений отображается внизу. Также справа есть три пункта для флажков, которые регулируют процесс поиска:
- Search class names – поиск по имени класса
- Search class descriptions – поиск по описанию класса
- Search property names – поиск по имени свойств класса
Стоит отменить, что регистр букв роли не играет, также не нужно использовать регулярные выражения, достаточно ввести только часть имени класса.
Просмотр экземпляров класса (Instances)
Для того, что бы просмотреть все экземпляры выбранного класса в окне проводника WMI CIM Studio, достаточно нажать на кнопку в виде пиктограммы Instances, она находится вверху в просмотрщике классов.
Для примера мы выбрали класс WMI Win32_Process, из рисунка видно, что нам вывело список всех экземпляров данного класса, а в реальности – список всех работающих в данный момент процессов. Если дважды щелкнуть мышью по любому из элементов списка, то мы автоматически получим информацию о данном экземпляре, как альтернатива, можно просто щелкнуть правой кнопкой мыши и выбрать пункт Go to Object. При отсутствии экземпляров у класса WMI, будет отображаться сообщение No Instances.
Работа с квалификаторами класса или объекта
Приложение CIM Studio пакета WMI Tools позволяет легко просматривать квалификаторы класса, свойства или метода. Для этого нужно выбрать в окне проводника нужный класс, далее, в окне просмотрщика в зависимости от выбранной вкладки мы можем нажать правой кнопкой мыши и выбрать пункт:
- Object Qualifiers – просмотреть квалификаторы выбранного класса
- Propertie Qualifiers – просмотреть квалификаторы выбранного свойства
- Method Qualifiers – просмотреть квалификаторы выбранного метода
Рассмотрим для примера квалификаторы класса Win32_Process инструментария Windows Management Instrumentation. Окно Qualifiers for class Win32_Process содержит таблицу с информацией о типе, имени и значении квалификатора.
При необходимости квалификаторы можно редактировать, а для сохранения изменении надо нажать кнопку ОК.
Работа со свойствами класса или объекта
Как ужу упоминалось, просмотреть свойства выбранного класса WMI можно в просмотрщике классов на вкладке Properties. Возле каждого свойства находятся пиктограммы, которые предоставляют дополнительную информацию о свойстве.
Я сначала постараюсь описать значение пиктограмм условно:
- Серый ключик – говорит о том, что данное свойство является главным, то есть, оно используется для определения пути к экземпляру класса.
- Пиктограмма компьютера – системное свойство, название которого начинается с двух подчеркиваний. Изменять или удалять системные свойства нельзя.
- Белый лист – локальное свойство, оно было определенно непосредственно в текущем классе.
- Желтая стрелка – данное свойство является наследованным от класса-предка
- Пиктограмма с ручкой – свойство доступно для редактирования
Как выглядят пиктограммы вы можете посмотреть на рисунке.
Стоит отметить тот факт, что даже наличие пиктограммы с ручкой, не всегда говорит о возможности редактирования заданного свойства. Что бы быть точно уверенным, нужно открыть окно квалификатора данного свойства WMI и проверить квалификатор write. Если значение данного квалификатора равно true, то свойство можно редактировать.
И так, в этой второй части по изучению утилиты WMI CIM Studio мы изучили работу с классами, квалификаторами и экземплярами, в третьей (заключительной) («Утилита WMI CIM Studio — часть 3«) части мы рассмотрим такое понятие как ассоциативные связи, MOF – файлы, а также выполнение методов и WQL запросов.
Хороший материал, взятый из журнала samag.ru [14], автор Константин Леонтьев. Тем, кто его до сих пор не читает, читать немедленно…
[Вы всё ещё не используете WMI?]
Если ты один из большинства админов, ты частенько грустишь, выглядывая из окна и наблюдая, как некоторые твои собратья ездят на своих «Ягуарах» и «Порше», или готовятся дернуть в Монте-Карло или какое-нибудь другое экзотическое место. И, конечно же, ты говоришь себе: «Я знаю о системном администрировании столько же, сколько и они, но почему именно у них есть клёвые тачки, яхты и часы «Ролекс»?..». Что ж, мы здесь для того, чтобы приоткрыть тебе небольшой секрет. Это все потому, что они знают, как писать WMI-скрипты, а ты – нет! Microsoft TechNet: Bob Wells, Dean Tsaltas, Ethan Wilansky и Greg Stemp |
Начиная карьеру системного администратора, Вы вероятно и не задумывались о том, что вместе с Вашим профессиональным ростом будет расти размер и сложность обслуживаемых систем. И вот наступил момент, когда вы поняли, что нужно принципиально новое решение, для того чтобы справляться с огромным количеством рутины, да ещё и в разных офисах вашей компании. Вероятнее всего, Вы уже немного знакомы с WMI на практике и используете некоторые готовые сценарии WMI для решения повседневных задач. Но согласитесь, что эффективное использование технологии начинается только тогда, когда вы понимаете ее архитектуру и четко представляете весь спектр возможностей, которые эта технология может вам предоставить.
Основная моя цель – кратко изложить основы, необходимые для эффективного использования вами этой технологии и представить вам набор рецептов по ее применению в реальных условиях.
Вы получите практический навык работы со всеми основными средствами WMI, выполнив несколько простых, но весьма полезных упражнений. Я предполагаю, что вы немного знакомы с программированием на VBScript и с азами языка SQL, а также имеете общее представление об объектно-ориентированном программировании. Обратите внимание на готовые примеры кода, которые помогут вам в Вашей работе.
Что такое WMI?
Формально: аббревиатура WMI – это Windows Management Instrumentation (инструментарий управления Windows). Из названия понятно, для чего создана и применяется эта технология. Стоит лишь добавить, что она давно перешагнула рамки управления только операционной системой Windows и позволяет контролировать множество других совместимых с ней приложений.
По своей сути WMI – это расширенная и адаптированная компанией Microsoft реализация стандарта WBEM (WebBased Enterprise Management компании DMTF Inc [1]). В основе WBEM лежит идея создания универсального интерфейса мониторинга и управления к различным системам и компонентам распределенной информационной среды предприятия с использованием объектно-ориентированной идеологии и широко распространенных веб-технологий представления информации: протоколов XML и HTTP. Стандарт WBEM является правопреемником стандарта DMI (Desktop Management Interface).
В основе структуры представления данных в стандарте WBEM лежит CIM (Common Information Model – модель информации общего типа), реализующая объектно-ориентированный подход к представлению компонентов систем как классов со своим набором свойств и методов, а также принципов наследования.
Основное средство для описания новых элементов модели CIM – это синтаксис языка Managed Object Format (MOF), который является текстовым и легко понятным человеку. Таким образом, любое приложение или драйвер в операционной системе, которая поддерживает стандарт WBEM, может добавить к системной модели CIM свой набор классов. Такое расширение модели CIM позволяет легко интегрировать в единую систему мониторинга и управления все новые и новые приложения. Для этой интеграции приложение должно лишь зарегистрировать свои классы в существующей модели CIM и обеспечить стандартные вызовы встроенных процедур для создания объектов этих классов и наполнения их свойствами и методами. Набор этих процедур оформляется, как WMI Provider – специальная библиотека, являющаяся мостом между любым приложением и ядром службы WMI.
Таким образом, WMI – это открытая унифицированная библиотека (репозиторий) однотипных интерфейсов доступа к параметрам, настройки и свойствам различных систем и их компонентов. Архитектура WMI представлена на рис. 1.
Рисунок 1. Архитектура WMI
Многие производители программного и аппаратного обеспечения ведут разработку ПО в соответствии со стандартом WBEM. Как следствие, это ПО совместимо и с WMI, а значит, может управляться через единый и удобный интерфейс.
Классы, объекты, свойства и методы
Поскольку WMI построена по объектно-ориентированному принципу, то все данные об операционной системе, ее свойствах, управляемых приложениях и обнаруженном оборудовании представлены в виде объектов. Каждый тип объекта описан классом, в состав которого входят свойства и методы. Определения классов описаны в MOF-файлах, а объекты этих классов с заполненными свойствами и доступными методами при их вызове возвращаются WMI-провайдерами. Управляет созданием и удалением объектов, а также вызовом их методов служба CIM Object Manager.
Получается, что если мы хотим управлять настройками сетевого адаптера, то мы должны запросить у CIM Object Manager экземпляр объекта нужного нам сетевого адаптера (забегая вперед, скажу, что этот объект принадлежит классу Win32_NetworkAdapterConfiguration) и вызвать нужные нам методы. В частности, для того чтобы обновить аренду адреса на DHCP сервере, достаточно вызвать метод RenewDHCPLease экземпляра объекта Win32_NetworkAdapterConfiguration.
Обзор средств работы с WMI для администратора
Начнем фактическое знакомство с WMI с обзора утилит, которые позволяют вам работать с WMI на ОС семейства Windows. Условно разделим этот набор утилит на поставляемые с операционной системой по умолчанию и набор утилит, которые потребуется скачивать с сайта компании Microsoft. К первой категории относятся следующие утилиты:
• wmimgmt.msc – оснастка консоли MMC, позволяющая в целом управлять самой системой WMI на выбранном компьютере.
• Winmgmt.exe – консольная утилита управления WMI. Выполняет аналогичные действия, что и консоль MMC wmimgmt.msc. Кроме того, является исполняемым файлом сервиса WMI в системе. Для запуска из консоли используется с опцией /exe (winmgmt.exe /exe).
• Wbemtest.exe – графическая утилита для интерактивной работы с WMI. Удобна для тестирования классов и методов, просмотра свойств и т. п.
• Wmic.exe – консольная утилита для вызова объектов и методов WMI (WMI Console) – присутствует только в Windows XP и Windows Server 2003.
• mofcomp.exe – компилятор MOF-файлов. Служит для расширения репозитория WMI и тонких операций с библиотекой классов WMI, а также для «ремонта» нарушенного репозитория.
Ко второй категории средств для работы с WMI, которые требуется дополнительно устанавливать, относится:
• WMI Code Creator 1.0 – очень удобная и полезная утилита для создания готовых сценариев WMI. Поддерживает языки Visual Basic Script, C# и Visual Basic .NET [2].
• WMI Administrative Tools – комплект средств в составе: WMI CIM Studio, WMI Event Registration, WMI Event Viewer и WMI Object Browser). Удобная среда разработки и тестирования WMI-классов и методов [3].
• Scriptomatic 2.0 – мастер в формате Hyper Text Application (HTA). Удобна для создания готовых сценариев и на различных скриптовых языках. Поддерживает Visual Basic Script, Perl, Java Script и Python [4].
• Tweakomatic Utility – утилита в формате Hyper Text Application (HTA). Содержит множество настроек системы, обычно доступных через утилиты-твикеры (например, Windows XP Power Toys TweakUI), для которых позволяет сгенерировать WMI-скрипты для их автоматической настройки. Весьма полезна при разработке сценариев автоматизированной установки и настройки [5].
Все утилиты, относящиеся ко второй категории, можно бесплатно скачать с сайта компании Microsoft по ссылкам, перечисленным в конце статьи. Полезно будет так же посетить раздел загрузки средств работы со скриптами [6] и общий раздел загрузки средств работы с WMI [7].
Для того, чтобы рассмотреть возможности и особенности всех средств работы с WMI, которые перечислены выше, не хватит и целого журнала, поэтому мы кратко остановимся на некоторых из них, на мой взгляд, наиболее полезных и (или) наиболее употребимых. Собственно, к таким я отношу следующие утилиты: WBEMTEST, WMIC, WMI Administrative Tools и довольно новую, но весьма полезную и удачную утилиту WMI Code Creator 1.0.
Надо отметить, что существуют и другие утилиты и средства работы с WMI, в том числе разработанные не компанией Microsoft, однако формат статьи не позволяет нам на них останавливаться сколько-нибудь подробно. Об одном из этих средств я считаю своим долгом хотя бы упомянуть в этой статье – это ADSI Scriptomatic [8], позволяющее создавать скрипты для управления службой каталогов Microsoft Active Directory.
Все примеры в этой статье протестированы на операционной системе Windows XP Service Pack 2, однако должны также корректно работать и на более ранних версиях OS Windows вплоть до Windows 2000. Если вам потребуется использовать WMI на более ранних версиях ОС Windows, то вам необходимо будет установить WMI Core Components 1.5 [9] и последнюю версию Windows Scripting Host [10, 11] на эти ОС.
Знакомимся с утилитой WBEMTEST
Чтобы прямо сейчас посмотреть, какой набор классов определен в репозитории WMI на вашем персональном компьютере, достаточно запустить утилиту wbemtest.exe и установить флажок «Enable All Privileges», как показано на рис. 2.
Рисунок 2. Основное окно утилиты WBEMTEST
Далее нужно нажать кнопку «Connect…», в поле пространства имен вписать root\CIMv2, как это показано на рис. 3, и нажать кнопку «Connect».
Рисунок 3. Окно настройки подключения к репозиторию WMI утилиты WBEMTEST
Рисунок 4. Основное окно утилиты WBEMTEST после подключения к репозиторию WMI
Затем нажмите кнопку «Enum Classes…», выберите «Recursive», не заполняйте поле суперкласса и нажмите «Ok». В результате вы получите список классов, определенный в вашем репозитории WMI, в пространстве имен CIMv2. Найдите среди всех класс с названием Win32_OperatingSystem (CIM_OperatingSystem), как это показано на рис. 5.
Рисунок 5. Окно результатов запроса со списком всех классов WMI пространства имен CIMv2
Дважды щелкните курсором мыши по классу Win32_OperatingSystem, посмотрите его свойства. Пример того, как это выглядит, показан на рис. 6.
Рисунок 6. Окно свойств класса Win32_OperatingSystem
Далее нужно нажать кнопку «Instances» и в открывшемся окне дважды щелкнуть курсором мыши по строке в списке экземпляров операционных систем. В открывшемся окне свойств экземпляра операционной системы найдите свойство («Property») с названием «Name», как это показано на рис. 7.
Рисунок 7. Окно свойств экземпляра объекта класса Win32_OperatingSystem
Дважды кликните по свойству курсором мыши. В открывшемся окне редактора свойств, которое показано на рис. 8, скопируйте отображаемое значение в буфер обмена. Оно пригодится нам в дальнейшем.
Рисунок 8. Окно со значением свойства Name экземпляра объекта класса Win32_OperatingSystem
Далее закройте все окна, кроме основного окна программы wbemtest. В блокноте отредактируйте строку из буфера обмена следующем образом:
— Заключите строку в кавычки.
— До первых кавычек добавьте следующий текст: «Win32_Operating-System.Name=».
— Замените все одинарные обратные слеши на двойные.
В итоге у вас должна получиться примерно следующая строка (в зависимости от версии ОС и логического диска, куда она установлена):
Win32_OperatingSystem.Name=»Microsoft Windows XP Professional|C:\\WINDOWS|\\Device\\Harddisk0\\Partition1″
Теперь давайте выполним следующее упражнение с утилитой wbemtest. В уже открытом окне утилиты wbemtest нажмем кнопку «Execute Method…» и в окошко «GetObjectPath» вставим строку, которую мы подготовили в блокноте. В появившемся окне (см. рис. 9) вызова метода экземпляра объекта выберите метод Reboot и нажмите кнопку «Execute!».
Рисунок 9. Окно вызова метода для экземпляра объекта класса Win32_OperatingSystem утилиты WBEMTEST
Поздравляю, Вы только что отправили свою операционную систему в перезагрузку, используя WMI. Если вы вдруг получили вместо перезагрузки сообщение об ошибке 0x80041062 «Privilege not held», то это означает, что вы забыли установить опцию «Enable All Privileges» до подключения к репозиторию WMI.
Теперь следует сказать (пока Windows перезагружается), что при подключении к пространству имен WMI вы можете подключаться не только на локальной машине, но и как следует из обзора WMI к любой удаленной. Главное, обладать на той машине необходимыми правами. Но об этих правах позднее! Для подключения к удаленной машине в окне подключения достаточно в поле Name Space указать строку вида \\\root\CIMv2 и указать учетные данные пользователя, обладающего необходимыми правами (например, Administrator). Пример этого показан на рис. 10.
Рисунок 10. Окно подключение к пространству имен WMI с явным указанием имени сервера
Не пробуйте подключаться к локальной машине, на которой запрашиваются объекты и методы WMI (например, на той, на которой сейчас выполняется утилита wbemtest), используя отличные от текущих учетные данные – все равно это у вас не получится. Это специальная защита для повышения локальной безопасности WMI, но о ней мы поговорим позже.
Утилита WMIC
Чтобы воспользоваться этой очень важной и полезной для администратора утилитой, достаточно запустить интерпретатор командной строки cmd.exe и в строке приглашения набрать WMIC. После этого у вас появится приглашение консоли WMI, как это показано на рис. 11.
Рисунок 11. Командное окно с запущенной утилитой WMIC в интерактивном режиме
Для получения справки по всем командам, доступным из консоли WMIC, достаточно в строке приглашения ввести команду «/?». Синтаксис каждой команды или глобальной опции вы можете посмотреть, введя ее название и знак вопроса. Например:
Так мы работаем с утилитой WMIC в интерактивном режиме. Однако ничто не мешает нам использовать ее и в пакетном режиме из наших BAT/CMD-сценариев. Например, в приглашении командной строки CMD можно написать:
и получить тот же результат.
Утилита WMIC создана для удобства использования WMI прямо из командной строки, поэтому наиболее употребимые классы WMI доступны для использования под псевдонимами (ALIAS). Вы можете самостоятельно определить псевдонимы для тех классов, для которых это еще не сделано, или добавить новые псевдонимы для тех классов WMI, которые уже их имеют.
Список псевдонимов, которые определены на Windows XP Service Pack 2 по умолчанию с их кратким описанием, приведены в таблице 1.
Таблица 1. Список псевдонимов утилиты WMIC и соответствие их классам WMI
Псевдоним | Описание | Имя класса WMI |
BASEBOARD | Управление материнской платой, она также называется motherboard, или системная плата. | Win32_BIOS |
BIOS | Управления базовыми сервисами ввода/вывода (Basic input/output services, BIOS). | Win32_BaseBoard |
BOOTCONFIG | Управление конфигурацией загрузки (Boot configuration management). | Win32_BootConfiguration |
CDROM | Управление приводом CD-ROM. | Win32_CDROMDrive |
COMPUTERSYSTEM | Управление системой компьютера. | Win32_ComputerSystem |
CPU | Управление процессовром. | WIN32_PROCESSOR |
CSPRODUCT | Получение от SMBIOS информации о компьютере как системном продукте. | Win32_ComputerSystemProduct |
DATAFILE | Управление данными файлов (DataFile Management). | CIM_DataFile |
DCOMAPP | Управление приложениями (DCOM Application management). | WIN32_DCOMApplication |
DESKTOP | Управление рабочим столом пользователя (User’s Desktop management). | WIN32_DESKTOP |
DESKTOPMONITOR | Desktop Monitor management | WIN32_DESKTOPMONITOR |
DEVICEMEMORYADDRESS | Управление адресами памяти устройств (Device memory addresses management). | Win32_DeviceMemoryAddress |
DISKDRIVE | Управление диском на физическом уровне (Physical disk drive management). | Win32_DiskDrive |
DISKQUOTA | Управление квотами NTFS пространства диска (Disk space usage for NTFS volumes). | Win32_DiskQuota |
DMACHANNEL | Управление каналами прямого доступа к памяти (Direct memory access, DMA channel management). | Win32_DMAChannel |
ENVIRONMENT | Управление настройками системного окружения (System environment settings management) | Win32_Environment |
FSDIR | Управление директориями файловой системы (Filesystem directory entry management). | Win32_Directory |
GROUP | Управление группами учетных записей (Group account management). | Win32_Group |
IDECONTROLLER | Управление контролером диска IDE (IDE Controller management). | Win32_IDEController |
IRQ | Управление сигналами прерываний (Interrupt request line, IRQ management). | Win32_IRQResource |
JOB | Предоставляет доступ к назначенным заданиям (jobs scheduled) с использованием службы назначенных заданий (schedule service). | Win32_ScheduledJob |
LOADORDER | Управление службами системы, которые задают зависимости запуска (execution dependencies). | Win32_LoadOrderGroup |
LOGICALDISK | Управление дисковыми локальными устройствами хранения (Local storage device management). | Win32_LogicalDisk |
LOGON | Управление сессиями пользователей (LOGON Sessions). | Win32_LogonSession |
MEMCACHE | Управление кэшем (Cache memory management). | WIN32_CACHEMEMORY |
MEMLOGICAL | Управление памятью системы (как сконфигурирована карта памяти, и как память доступна для приложений и сервисов). | Win32_LogicalMemoryConfiguration |
MEMPHYSICAL | Управление памятью компьютера на физическом уровне (Computer system’s physical memory management). | Win32_PhysicalMemoryArray |
NETCLIENT | Управление клиентом сети (Network Client management). | WIN32_NetworkClient |
NETLOGIN | Управление информацией учетной записи сети для отдельного пользователя. | Win32_NetworkLoginProfile |
NETPROTOCOL | Управление протоколами и их сетевыми характеристиками. | Win32_NetworkProtocol |
NETUSE | Управление активным сетевым соединением. | Win32_NetworkConnection |
NIC | Управление сетевым адаптером (Network Interface Controller, NIC). | Win32_NetworkAdapter |
NICCONFIG | Управление конфигурацией сетевого адаптера. | Win32_NetworkAdapterConfiguration |
NTDOMAIN | Управление доменом NT. | Win32_NTDomain |
NTEVENT | Получение доступа к логам событий (Entries in the NT Event Log). | Win32_NTLogEvent |
NTEVENTLOG | Управление файлом лога (NT eventlog file management). | Win32_NTEventlogFile |
ONBOARDDEVICE | Управление общими адаптерами, установленными в материнскую плату (system board). | Win32_OnBoardDevice |
OS | Управление инсталлированными операционными системами. | Win32_OperatingSystem |
PAGEFILE | Управление виртуальной памятью и её свопом на диск. | Win32_PageFileUsage |
PAGEFILESET | Установка параметров файла свопа. | Win32_PageFileSetting |
PARTITION | Управление логическими разделами физического диска (Management of partitioned areas of a physical disk). | Win32_DiskPartition |
PORT | Управление портами ввода/вывода (I/O port management). | Win32_PortResource |
PORTCONNECTOR | Управление физическим соединением портов (Physical connection ports management). | Win32_PortConnector |
PRINTER | Printer device management | Win32_Printer |
PRINTERCONFIG | Управление конфигурацией принтера. | Win32_PrinterConfiguration |
PRINTJOB | Управление заданиями принтера. | Win32_PrintJob |
PROCESS | Управление процессами. | Win32_Process |
PRODUCT | Управление задачей инсталляционных пакетов (Installation package task management). | Win32_Product |
QFE | Быстрое исправление ошибок (Quick Fix Engineering). | Win32_QuickFixEngineering |
QUOTASETTING | Установка информации о квотах, установленных для тома диска (Setting information for disk quotas on a volume). | Win32_QuotaSetting |
RECOVEROS | Информация, которая была захвачена из памяти при крахе системы. | Win32_OSRecoveryConfiguration |
REGISTRY | Управление реестром системы. | Win32_Registry |
SCSICONTROLLER | Управление контроллером SCSI. | Win32_SCSIController |
SERVER | Управление информацией о сервере. | Win32_PerfRawData_PerfNet_Server |
SERVICE | Управление прикладными сервисами. | Win32_Service |
SHARE | Управление общими сетевыми ресурсами (Shared resource management). | Win32_Share |
SOFTWAREELEMENT | Управление элементами программных продуктов, установленных в системе. | Win32_SoftwareElement |
SOFTWAREFEATURE | Управление подмножествами программных продуктов SoftwareElement. | Win32_SoftwareFeature |
SOUNDDEV | Управление устройством звука. | WIN32_SoundDevice |
STARTUP | Управление командами автозапуска при входе пользователя в систему. | Win32_StartupCommand |
SYSACCOUNT | Управление учетной записью системы (System account management). | Win32_SystemAccount |
SYSDRIVER | Управление системным драйвером для базовой службы (Management of the system driver for a base service). | Win32_SystemDriver |
SYSTEMENCLOSURE | Управление физическим доступом к корпусу компьютера (Physical system enclosure management). | Win32_SystemEnclosure |
SYSTEMSLOT | Управление физичесими соединениями, включая порты, слоты и периферийные устройства, и точками проприетарных соединений. | Win32_SystemSlot |
TAPEDRIVE | Управление накопителем на магнитной ленте. | Win32_TapeDrive |
TEMPERATURE | Управление данными от датчика температуры (электронный термометр). | Win32_TemperatureProbe |
TIMEZONE | Управление данными часового пояса (Time zone data management). | Win32_TimeZone |
UPS | Управление источником бесперебойного питания (Uninterruptible power supply, UPS). | Win32_UninterruptiblePowerSupply |
USERACCOUNT | Управление учетными записями пользователей (User account management). | Win32_UserAccount |
VOLTAGE | Управление данными сенсора напряжения (электронный вольтметр). | Win32_VoltageProbe |
VOLUMEQUOTASETTING | Связывает установки дисковой квоты с определенным дисковым томом. | Win32_VolumeQuotaSetting |
WMISET | Управляет рабочими параметрами службы WMI. | Win32_WMISetting |
Теперь давайте попробуем использовать утилиту WMIC для работы с WMI из командной строки. Для начала выйдите из интерактивного режима консоли WMIC командой exit. Вы оказались в среде командного интерпретатора CMD. В приглашении наберите команду:
Вы получите список процессов, запущенных на вашем локальном компьютере. Теперь выполните команду:
wmic process list brief | find "cmd.exe"
Теперь список процессов ограничен только теми процессами, в имени исполняемого модуля которых присутствует строка «cmd.exe». Обратите внимание на PID процесса(ов).
Давайте попробуем отобрать интересующие нас процессы, используя непосредственно WMI и не прибегая к стандартным средствам командной строки. Для этого просто напишите:
wmic process where description='cmd.exe' list brief
Сравните полученные результаты. Запомните PID процесса CMD.EXE.
Вызовем метод Terminate для экземпляра объекта WMI. Так мы завершим интересующий нас процесс в системе. Для того чтобы однозначно определить процесс, который мы хотим завершить, нам нужно использовать его PID или какой-либо другой набор атрибутов процесса, которые позволяют его однозначно отличить от множества других процессов в системе. Для завершения процесса нам нужно вызвать метод WMI. Для этого существует команда CALL. Для того чтобы вывести справку по всем методам, применимым к объектам типа PROCESS (Win32_Process), наберите команду:
Среди них обратите внимание на метод Terminate – он принимает в качестве единственного входного параметра значение типа UINT32 (беззнаковое 32-разрядное целое) в качестве индекса причины завершения процесса. В данном случае этот параметр аналогичен Exit-коду.
Запустите четыре разных экземпляра процесса cmd.exe (откройте 4 командных окна). Еще раз выполните команду:
wmic process where description='cmd.exe' list brief
В результате вы получите в ответ примерно следующее:
HandleCount Name Priority ProcessId ThreadCount WorkingSetSize
28 cmd.exe 8 4648 1 2494464
28 cmd.exe 8 5156 1 2498560
28 cmd.exe 8 4940 1 2498560
31 cmd.exe 8 612 1 2703360
Итак, чтобы завершить конкретный процесс, просто наберите:
wmic process where processid='****' call terminate(0)
вместо звездочек укажите PID нужного вам экземпляра процесса cmd.exe.
Теперь давайте одной командой завершим все оставшиеся процессы cmd.exe, для этого просто введите команду:
wmic process where description='cmd.exe' call terminate(0)
Что за конструкция where и как еще ее можно использовать, мы разберем чуть позже в разделе «Язык запросов WQL».
Для того чтобы подключиться к репозиторию WMI на другом компьютере и выполнять все те же действия, при условии, что наша учетная запись обладает достаточными правами, нам всего лишь нужно немного модифицировать нашу командную строку. Теперь наши команды должны выглядеть примерно так:
wmic /NODE:server01 /USER:DOMAIN\Administrator /PASSWORD:qwerty /PRIVILEGES:ENABLE process where description='cmd.exe' list brief
Если же вы хотите выполнить какие-то действия, используя WMI не с одним, а с целой группой компьютеров, то достаточно написать команду с использованием WMIC и ключом «/node:@serverslist.txt»:
wmic /NODE:@serverslist.txt /USER:DOMAIN\Administrator /PASSWORD:qwerty /PRIVILEGES:ENABLE process where description='cmd.exe' list brief
В файле serverlist.txt в столбец или в строку должны быть перечислены имена (IP-адреса) хостов, на которых необходимо выполнить это действие.
В довершение краткого описания утилиты WMIC, следует сказать об еще одной, поистине замечательной, ее особенности – форматировании вывода. Практически все команды WMIC, которые возвращают информацию, могут ее форматировать разными способами. Для этого используется ключ «/format:». Форматирование производится с использованием технологии XSLT (шаблонов для преобразования XML). По умолчанию уже определен ряд готовых преобразований: CSV, HFORM, HMOF, HTABLE, HXML, RAWXML, TABLE, VALUE. Вы так же сами можете определить дополнительные шаблоны форматирования в формате XSLT и использовать их совместно с WMIC.
Краткое практическое знакомство c WMI CIM Studio
Это набор приложений Microsoft Internet Explorer, который позволяет с одной стороны очень тонко, с другой стороны довольно удобно работать с WMI. При этом вы можете как просматривать классы и вызывать методы, так и создавать события и даже модифицировать репозиторий WMI. Поэтому будьте очень осторожны. Если вы запускаете WMI CIM Studio на Windows XP Service Pack 2, то Internet Explorer предупредит вас о потенциальной угрозе безопасности. Вам следует разрешить заблокированное содержимое ActiveX.
На рис. 12 показан вид окна WMI CIM Studio. Слева вы видите набор классов WMI и их иерархии в том пространстве имен WMI, которое вы выбрали при подключении. Справа перечислены все свойства выбранного класса. Все методы класса перечислены на закладке Methods, а на закладке Associations показана «родословная» этого класса и других классов, которые выведены из него.
Рисунок 12. Окно утилиты WMI CIM Studio с открытыми свойствами класса Win32_OperatingSystem
Если вы хотите посмотреть все экземпляры объектов выбранного класса, существующие в вашей системе, то достаточно нажать кнопку со значком списка (четвертая справа кнопка в правой панели кнопок).
WMI CIM Studio очень удобный инструмент для поиска классов и свойств в огромном море репозитория WMI. Для поиска нажмите кнопку со значком бинокля и введите шаблон для поиска, например «network». Выберите область поиска (Class names, Class description, Property names) и нажмите «Go!». В целом WMI CIM Studio очень хороший инструмент для поиска и исследования репозитория WMI и для интерактивного анализа состояния экземпляров объектов WMI.
Язык запросов WQL
Теперь нам следует разобраться, что же такое WQL, а также каким образом в разделе, где описана работа WMIC, мы делали выборку объектов WMI по определенным критериям. Разбирая эту тему, полезно вспомнить, что объектно-ориентированная модель представления данных хорошо ложится на структуру реляционных баз данных. В частности можно провести следующие аналогии: определение таблицы данных (поля и их типы) – это классы объектов, строки в конкретной таблице – это экземпляры объектов данного класса. Каждое поле (столбец) в таблице – это свойство всех объектов данного класса. Каждая ячейка в конкретной строке – это свойство (property) конкретного экземпляра объекта. Связи таблиц и представления можно рассматривать как частный случай наследования. Триггеры и встроенные процедуры исходя из этой аналогии – это методы классов.
Собственно, для того чтобы удобно было работать с множественными экземплярами объектов WMI, используется язык WMI Query Language (WQL), который является подмножеством ANSI SQL.
Основное отличие WQL от ANSI SQL состоит в том, что WQL не позволяет производить изменения в данных WMI, т. е. фактически в WQL поддерживается лишь один оператор SQL: select. Кроме того, в операторе select языка WQL не поддерживаются следующие ключевые слова: DISTINCT, COUNT, JOIN, SUBSTRING, ORDER BY, UPPER, LOWER и DATEPART (эти ключевые слова поддерживаются в варианте Extended WQL (eWQL), реализованном в Microsoft SMS 2.0 и SMS 2003). Не поддерживаются арифметические операторы. Кроме того конструкции IS и IS NOT могут применяться только в сочетании с константой NULL. Языком WQL поддерживается оператор LIKE. Более подробно про шаблоны, применяемые совместно с оператором LIKE в WQL, можно ознакомиться в оригинальном описании WMI на сайте Microsoft [12, 13].
Ниже приведен пример некоторых типичных WQL-запросов:
SELECT * FROM Win32_LogicalDisk WHERE FileSystem IS NULL SELECT * FROM Win32_LogicalDisk WHERE FileSystem IS NOT NULL SELECT * FROM Win32_LogicalDisk WHERE FileSystem = "NTFS" SELECT * FROM Win32_DiskDrive WHERE Partitions < 2 OR SectorsPerTrack > 100 SELECT * FROM Win32_LogicalDisk WHERE (Name = "C:" OR Name = "D:") AND FreeSpace > 2000000 AND FileSystem = "NTFS" SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Application' SELECT * FROM Meta_Class WHERE __Class LIKE %Win32% SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA "Win32_NTLogEvent" GROUP WITHIN 600 BY TargetInstance.SourceName HAVING NumberOfEvents > 25
Вы можете поупражняться в запросах WMI с помощью уже хорошо известной вам утилиты WBEMTEST, нажав кнопку «Query» в ее главном окне.
Теперь вспомните утилиту командной строки WMIC, функции которой мы разбирали немного выше. В ее синтаксисе также могут использоваться WQL-запросы для удобства работы с наборами объектов одного класса. Чтобы использовать уже имеющиеся и проверенные WQL-запросы (большинство из них удобнее всего проверять утилитой WBEMTEST), из командной строки достаточно отбросить у WQL-запроса первую часть: «select * from». Затем заменить имя класса на его алиас (псевдоним) из таблицы 1 и при необходимости добавить после запроса вызов метода, формат вывода списка или запрос свойства объекта. Примеры того, что при этом получается, я уже приводил выше.
Если же среди псевдонимов в таблице 1 нет нужного вам класса, то есть два пути решения. Первый – добавить новый псевдоним для нового класса. Этот путь хорош, если с этим классом из WMIC вы будете работать только на этом компьютере. Если же вы хотите использовать команду wmic на разных компьютерах, в том числе и на тех, на которых такой алиас вы не определяли, то можно воспользоваться вторым способом. Второй способ позволяет явно использовать настоящее имя класса WMI при обращении к нему с помощью WMIC. Для этого используйте следующий синтаксис:
wmic path Win32_LogicalDisk WHERE FileSystem='NTFS' get /value
Заключение
Во второй части статьи [15] обсудим написание сценариев с использованием WMI и WSH. Будут разобраны особенности использования WMI в скриптах, из тех, которые обычно вызывают наибольшие затруднения у людей, начинающих работать с этой технологией. К таким темам я отношу: построение moniker string, использование различных пространств имен WMI, связка WMI и COM, использование различных языков программирования вместе с WMI, имперсонация, аутентификация и привилегии. Наконец, наиболее интересные моменты, связанные с подключением к удаленным компьютерам и обработкой системных событий с помощью WMI. В заключении мы обсудим готовые продукты, использующие WMI и стратегию развития этой технологии, а так же ее применения в информационных системах предприятий.
[Ссылки и литература]
1. Distributed Management Task Force Inc. site:dmtf.org.
2. WMICodeCreator.zip site:microsoft.com — WMI Code Creator 1.0.
3. WMITools.exe site:microsoft.com — WMI Administrative Tools.
4. Scriptomatic site:microsoft.com.
5. Tweakomatic Utility site:microsoft.com.
6. Microsoft Scripting Downloads Catalog site:msdn.microsoft.com.
7. WMI Downloads catalog site:msdn.microsoft.com.
8. ADSI Scriptomatic site:microsoft.com.
9. WMI Core 1.5 for Windows 9x, NT 4.0 SP4 site:microsoft.com.
10. Windows Scripting Host 5.6 for Windows 9x/NT/ME site:microsoft.com.
11. Microsoft Windows Script 5.6 Documentation site:microsoft.com.
12. WQL Keywords and description site:msdn.microsoft.com.
13. Windows Management Instrumentation site:msdn.microsoft.com.
14. Вы всё ещё не используете WMI? Часть 1 site:samag.ru.
15. Вы всё ещё не используете WMI? Часть 2 site:samag.ru.
Интерактивная работа с объектами WMI
При изучении WMI очень полезно с помощью графических утилит просматривать иерархическую структуру классов и связи между различными объектами CIM. Для просмотра объектной модели WMI можно воспользоваться специальный тестер WMI (стандартная программа в операционных системах Windows 2000/XP) или утилитами из разработанного Microsoft дополнительного пакета WMI Tools.
Тестер WMI (WBEMTest)
Тестер WMI (wbemtest.exe) — это графическая утилита, с помощью которой можно взаимодействовать с инфраструктурой WMI на локальном или удаленном компьютере. С помощью тестера WMI можно решать следующие задачи:
- подсоединяться к определенному пространству имен CIM;
- создавать и удалять классы и экземпляры классов;
- получать список имеющихся классов и экземпляров классов CIM;
- просматривать и изменять свойства и квалификаторы классов или экземпляров классов;
- выполнять методы классов и экземпляров классов;
- составлять и выполнять запросы на языке WQL;
- выводить код MOF для классов и экземпляров управляемых ресурсов.
Исполняемый файл wbemtest.exe является стандартным компонентом WMI в любой операционной системе; устанавливается он в каталог %SystemRoot%\System32\Wbem. После запуска этого файла появляется диалоговое окно Тестер инструментария управления Windows (Windows Management Instrumentation Tester), с помощью которого можно получить доступ ко всем функциям тестера WMI (рис. 11.6).
Рис.
11.6.
Тестер WMI
Сразу после запуска большинство кнопок этого диалогового окна недоступны — ими можно будет воспользоваться только после подключения к подсистеме WMI. До подключения можно установить флажок Включить все привилегии (Enable all privileges), что позволит средствами WMI выполнять операции, для которых необходимы специальные привилегии в операционных системах Windows NT/2000/XP (например, перезагрузку компьютера).
Отметим, что работа с тестером WMI предполагает хорошее знание структуры CIM и умение составлять запросы на языке WQL. Для первоначального ознакомления и изучения структуры объектной модели WMI лучше воспользоваться пакетом WMI Tools.
Административные утилиты WMI (WMI Tools)
В состав разработанных Microsoft административных утилит WMI входят несколько приложений, имеющих сходный интерфейс.
- WMI CIM Studio. Это наиболее универсальное приложение, которое может быть использовано для просмотра и редактирования в репозитории CIM классов и их экземпляров. С помощью WMI CIM Studio можно также выполнять методы классов и объектов, просматривать ассоциации между различными классами, выполнять запросы на языке WQL, генерировать и компилировать файлы MOF для классов и объектов. Короче говоря, утилита WMI CIM Studio обладает практически теми же возможностями, что и тестер WMI (wbemtest.exe), однако имеет гораздо более удобный интуитивный интерфейс. Как и работа с тестером WMI, использование WMI CIM Studio предполагает довольно хорошее знание структуры репозитория CIM и названий нужных классов.
- WMI Object Browser. Эта утилита предназначена для просмотра и редактирования объектов (экземпляров классов) в репозитории CIM, а также для вызовов их методов. Особенностью WMI Object Browser является то, что информация об объектах представлена в виде иерархического дерева, где в качестве корневого объекта может использоваться произвольный экземпляр выбранного нами класса. Само дерево объектов строится с помощью ассоциированных классов, что помогает извлекать информацию об управляемых ресурсах, не обладая глубокими знаниями о структуре репозитория CIM и используемых классах.
- WMI Event Registration Tool. Данная утилита предоставляет графический интерфейс для регистрации и конфигурирования постоянных потребителей событий WMI. Здесь можно создавать или изменять фильтры событий, определять постоянных потребителей и устанавливать связи между ними и фильтрами событий.
- WMI Event Viewer. Это вспомогательное приложение является постоянным потребителем событий, позволяющим сортировать и просматривать подробную информацию о полученных событиях.
Если эти утилиты нужно установить в Windows 2000/XP/Server 2003, то инсталляционный файл WMITools.exe можно свободно скачать с сервера Microsoft (http://download.microsoft.com/download/.NetStandardServer/Install/V1.1/NT5XP/EN-US/WMITools.exe).
В случае же Windows 9x/NT 4.0 необходимо установить комплект инструментальных средств разработки SDK WMI, в состав которого также входят все описанные утилиты. Инсталляционный файл wmisdk.exe можно свободно скачать с сервера Microsoft (http://download.microsoft.com/download/platformsdk/x86wmi/1.1/W9XNT4/ EN-US/wmisdk.exe).
Административные утилиты WMI реализованы в виде элементов ActiveX, которые встроены в страницы HTML, поэтому для их корректной работы необходимо, чтобы в системе был установлен браузер Microsoft Internet Explorer 5.0/6.0. Кроме этого, пользователь, который производит установку утилит WMI на компьютер, должен обладать правами администратора.
Подключение к пространству имен WMI
Для запуска любой из трех основных административных утилит WMI (WMI CIM Studio, WMI Object Browser или WMI Event Registration Tool) нужно выбрать соответствующий одноименный пункт в меню Пуск | Программы | WMI Tools (Start | Programs | WMI Tools). Первым шагом после запуска во всех этих утилитах является подключение к какому-либо пространству имен на локальном или удаленном компьютере с помощью диалогового окна Connect to namespace (рис. 11.7).
Рис.
11.7.
Ввод пространства имен WMI для подключения
По умолчанию в этом окне предлагается подключиться к пространству имен CIMV2 на локальном компьютере (root\CIMV2). Путь к нужному пространству имен на локальном или удаленном компьютере можно либо написать вручную, либо выбрать это пространство с помощью кнопки Browse For Namespace.
Если компьютер, к которому предполагается подключиться, доступен в сети, то его можно найти и выбрать с помощью кнопки Network Neighborhood.
После ввода в поле Machine Name имени нужного компьютера, следует выбрать интересующее нас пространство имен из списка. Для этого нужно в поле Starting Namespace написать название корневого пространства имен (обычно это Root) и нажать на кнопку Connect. В результате на экран выводится диалоговое окно Login (в заголовке этого окна отображается также название запущенного приложения), в котором можно указать имя пользователя и пароль для учетной записи, от имени которой происходит подключение к пространству имен (рис. 11.8).
Рис.
11.8.
Диалоговое окно WMI CIM Studio Login
Напомним, что к пространству имен на локальном компьютере может получить доступ только текущий пользователь, поэтому в случае локальной машины флажок Login as current user установлен, а поля Username, Password и Authority недоступны для редактирования. К пространству имен на удаленной машине можно подключаться как от имени текущего пользователя (для этого следует установить флажок Login as current user), так и от имени другого пользователя (в этом случае нужно снять флажок Login as current user и внести в поля Username и Password имя пользователя в виде domain\user и пароль соответственно).
Также в окне Login с помощью кнопки Options>> можно настроить дополнительные параметры подключения к инфраструктуре WMI (задать уровни олицетворения и проверки подлинности протокола DCOM, а также указать требуемые привилегии операционной системы).
После нажатия кнопки OK в окне Login и подключения к структуре WMI на нужном компьютере, в окне Browse For Namespace появится иерархический список всех классов из репозитория CIM на этом компьютере (рис. 11.9).
Рис.
11.9.
Выбор нужного пространства имен из списка
Выбрав требуемое пространство имен из списка и нажав кнопку OK, мы вновь попадаем в диалоговое окно Login (см. рис. 11.8), где нужно ввести необходимую информацию и нажать кнопку OK.
Замечание
Независимо от способа подключения пользователь должен иметь доступ к выбранному пространству имен WMI.
Для изучения структуры классов WMI можно воспользоваться утилитой WMI CIM Studio или WMI Object Browser.
WMI CIM Studio
Утилита WMI CIM Studio является универсальным инструментом при работе со схемой CIM, которая позволяет:
- осуществлять навигацию по иерархическому дереву классов CIM;
- формировать список всех экземпляров определенного класса;
- добавлять новые и удалять существующие классы или экземпляры классов (объекты);
- просматривать и изменять (если это возможно) свойства, методы, квалификаторы и ассоциации классов или объектов;
- выполнять методы классов или объектов;
- генерировать для класса или объекта его описание на языке MOF и компилировать имеющийся MOF-файл в репозиторий CIM.
Приложение WMI CIM Studio реализовано в виде двух окон, которые открываются в браузере Internet Explorer (рис. 11.10).
Левое окно называется проводником классов (Class Explorer), а правое — просмотрщиком классов (Class Viewer). Выбрав класс в левом окне, можно просмотреть информацию о нем в правом окне.
WMI Object Browser
Утилита WMI Object Browser позволяет осуществлять навигацию по иерархическому дереву объектов WMI, просматривать и редактировать (если это возможно) свойства, методы, квалификаторы и ассоциации экземпляров классов, а также выполнять методы этих экземпляров. Главное отличие WMI Object Browser от WMI CIM Studio состоит в том, что в WMI CIM Studio мы пользуемся списком классов CIM в выбранном пространстве имен WMI, а в WMI Object Browser на экран выводится дерево объектов, причем в качестве корневого объекта здесь может использоваться произвольный экземпляр выбранного нами класса, а само дерево объектов строится с помощью ассоциативных классов (рис. 11.11).
Можно сказать, что утилита WMI Object Browser разработана, в большей мере, для применения системными администраторами, которые могут не иметь детального представления о назначении конкретных классов WMI и о структуре CIM вообще. Здесь вся информация (схема), которая содержится в репозитории CIM, представлена в более понятном и наглядном виде, чем в WMI CIM Studio. Например, по умолчанию корневым объектом в пространстве имен CIMV2 на локальном или удаленном компьютере является экземпляр класса Win32_ComputerSystem, у которого значение свойства Name совпадает с именем этого компьютера. Поэтому в корне дерева стоит объект с именем компьютера, а ниже в иерархическом порядке располагаются все его зависимые объекты (логические и физические компоненты этого компьютере).
Таким образом, даже человеку, который не владеет глубокими знаниями о схеме классов WMI, в WMI Object Browser наглядно видно представление компьютера в качестве дерева его составных частей, причем каждую часть здесь можно детально изучить и произвести с ней необходимые манипуляции, не прибегая к помощи никаких дополнительных программных средств.
Напомним, что для запуска WMI Object Browser, как и других административных утилит WMI, нужно выбрать одноименный пункт в меню Пуск | Программы | WMI Tools (Start | Programs | WMI Tools), после чего производится подключение к нужному пространству имен на локальном или удаленном компьютере.
Внешне утилита WMI Object Browser очень похожа на WMI CIM Studio, здесь также имеются два окна, которые открываются в браузере Internet Explorer (см. рис. 11.11). Левое окно называется проводником объектов (Object Explorer), а правое — просмотрщиком объектов (Object Viewer). Выбрав объект в левом окне, можно просмотреть информацию о нем в правом окне.