Главная Wednesday, August 23 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
лента новостей сайта microsin.ru лента новостей
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:
Кто он-лайн
Сейчас на сайте:
Гостей - 2
Модуль рекламы
Поисковые системы

Для тех, для кого новость WMI - читай эту не новую статью Версия для печати
Написал AJEV   
27.05.2008

Хороший материал, взятый из журнала http://www.samag.ru/art/01.2006/01.2006_02.html
Тем кто его до сих пор не читает, читать немедленно...

Вы всё ещё не используете WMI?

Часть I

Константин Леонтьев

Если ты один из большинства админов, ты частенько грустишь,
выглядывая из окна и наблюдая, как некоторые твои собратья
ездят 
на своих «Ягуарах» и «Порше» или готовятся дернуть
в Монте-Карло или какое-нибудь другое экзотическое место.

И, конечно же, ты говоришь себе: «Я знаю о системном
администрировании столько же, сколько и они, но почему
именно
у них есть клёвые тачки, яхты и часы «Ролекс»».

Что ж, мы здесь для того, чтобы приоткрыть тебе небольшой секрет.
Это все потому, что они знают, как писать WMI-скрипты, а ты – нет!

Microsoft TechNet:

Bob Wells, Dean Tsaltas, Ethan Wilansky и Greg Stemp

http://www.microsoft.com/technet/scriptcenter/tools/wmimatic.mspx

Начиная карьеру системного администратора, вы, вероятно, и не задумывались о том, что вместе с вашим профессиональным ростом будет расти размер и сложность обслуживаемых вами систем. И вот наступил момент, когда вы поняли, что нужно принципиально новое решение, для того чтобы справляться с огромным количеством рутины, да ещё и в разных офисах вашей компании.

Для кого предназначается эта статья?

Вероятнее всего, вы уже немного знакомы с 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.

К первой категории относятся следующие утилиты:

n  wmimgmt.msc – оснастка консоли MMC, позволяющая в целом управлять самой системой WMI на выбранном компьютере.

n  Winmgmt.exe – консольная утилита управления WMI. Выполняет аналогичные действия, что и консоль MMC wmimgmt.msc. Кроме того, является исполняемым файлом сервиса WMI в системе. Для запуска из консоли используется с опцией /exe (winmgmt.exe /exe).

n  Wbemtest.exe – графическая утилита для интерактивной работы с WMI. Удобна для тестирования классов и методов, просмотра свойств и т. п.

n  Wmic.exe – консольная утилита для вызова объектов и методов WMI (WMI Console) – присутствует только в Windows XP и Windows Server 2003.

n  mofcomp.exe – компилятор MOF-файлов. Служит для расширения репозитория WMI и тонких операций с библиотекой классов WMI, а также для «ремонта» нарушенного репозитория.

 

Ко второй категории средств для работы с WMI, которые требуется дополнительно устанавливать, относится:

n  WMI Code Creator 1.0 – очень удобная и полезная утилита для создания готовых сценариев WMI. Поддерживает языки Visual Basic Script, C# и Visual Basic .NET [2].

n  WMI Administrative Tools – комплект средств в составе: WMI CIM Studio, WMI Event Registration, WMI Event Viewer и WMI Object Browser). Удобная среда разработки и тестирования WMI-классов и методов [3].

n  Scriptomatic 2.0 – мастер в формате Hyper Text Application (HTA). Удобна для создания готовых сценариев и на различных скриптовых языках. Поддерживает Visual Basic Script, Perl, Java Script и Python [4].

n  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. В блокноте отредактируйте строку из буфера обмена следующем образом:

n  Заключите строку в кавычки.

n  До первых кавычек добавьте следующий текст: «Win32_Operating-System.Name=».

n  Замените все одинарные обратные слеши на двойные.

В итоге у вас должна получиться примерно следующая строка (в зависимости от версии ОС и логического диска, куда она установлена):

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 указать строку вида \\<computername>\root\CIMv2 и указать учетные данные пользователя, обладающего необходимыми правами (например, Administrator). Пример этого показан на рис. 10.

Рисунок 10. Окно подключение к пространству имен WMI с явным указанием имени сервера

Не пробуйте подключаться к локальной машине, на которой запрашиваются объекты и методы WMI (например, на той, на которой сейчас выполняется утилита wbemtest), используя отличные от текущих учетные данные – все равно это у вас не получится. Это специальная защита для повышения локальной безопасности WMI, но о ней мы поговорим позже.

Изучаем работу утилиты WMIC

Для того чтобы воспользоваться этой очень важной и полезной для администратора утилитой, достаточно запустить интерпретатор командной строки cmd.exe и в строке приглашения набрать WMIC. После этого у вас появится приглашение консоли WMI, как это показано на рис. 11.

Рисунок 11. Командное окно с запущенной утилитой WMIC в интерактивном режиме

Для получения справки по всем командам, доступным из консоли WMIC, достаточно в строке приглашения ввести команду «/?». Синтаксис каждой команды или глобальной опции вы можете посмотреть, введя ее название и знак вопроса.

Например:

process list /?

Так мы работаем с утилитой WMIC в интерактивном режиме. Однако ничто не мешает нам использовать ее и в пакетном режиме из наших BAT/CMD-сценариев. Например, в приглашении командной строки CMD можно написать:

wmic process list /?

и получить тот же результат.

Утилита WMIC создана для удобства использования WMI прямо из командной строки, поэтому наиболее употребимые классы WMI доступны для использования под псевдонимами (ALIAS). Вы можете самостоятельно определить псевдонимы для тех классов, для которых это еще не сделано, или добавить новые псевдонимы для тех классов WMI, которые уже их имеют.

Список псевдонимов, которые определены на Windows XP Service Pack 2 по умолчанию с их кратким описанием, приведены в таблице 1.

Таблица 1. Список псевдонимов утилиты WMIC и соответствие их классам WMI

Псевдоним

Описание

Имя клсса WMI

BASEBOARD

Base board (also known as a motherboard or system board) management

Win32_BIOS

BIOS

Basic input/output services (BIOS) management

Win32_BaseBoard

BOOTCONFIG

Boot configuration management

Win32_BootConfiguration

CDROM

CD-ROM management

Win32_CDROMDrive

COMPUTERSYSTEM

Computer system management

Win32_ComputerSystem

CPU

CPU management

WIN32_PROCESSOR

CSPRODUCT

Computer system product information from 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

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 Controller management

Win32_IDEController

IRQ

Interrupt request line (IRQ) management

Win32_IRQResource

JOB

Providesaccess to the jobs scheduled using the schedule service

Win32_ScheduledJob

LOADORDER

Management of system services that define execution dependencies

Win32_LoadOrderGroup

LOGICALDISK

Local storage device management

Win32_LogicalDisk

LOGON

LOGON Sessions

Win32_LogonSession

MEMCACHE

Cache memory management

WIN32_CACHEMEMORY

MEMLOGICAL

System memory management (configuration layout and availability of memory)

Win32_LogicalMemoryConfiguration

MEMPHYSICAL

Computer system’s physical memory management

Win32_PhysicalMemoryArray

NETCLIENT

Network Client management

WIN32_NetworkClient

NETLOGIN

Network login information (of a particular user) management

Win32_NetworkLoginProfile

NETPROTOCOL

Protocols (and their network characteristics) management

Win32_NetworkProtocol

NETUSE

Active network connection management

Win32_NetworkConnection

NIC

Network Interface Controller (NIC) management

Win32_NetworkAdapter

NICCONFIG

Network adapter management

Win32_NetworkAdapterConfiguration

NTDOMAIN

NT Domain management

Win32_NTDomain

NTEVENT

Entries in the NT Event Log

Win32_NTLogEvent

NTEVENTLOG

NT eventlog file management

Win32_NTEventlogFile

ONBOARDDEVICE

Management of common adapter devices built into the motherboard (system board)

Win32_OnBoardDevice

OS

Installed Operating System/s management

Win32_OperatingSystem

PAGEFILE

Virtual memory file swapping management

Win32_PageFileUsage

PAGEFILESET

Page file settings management

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

Printer device configuration management

Win32_PrinterConfiguration

PRINTJOB

Print job management

Win32_PrintJob

PROCESS

Process management

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

Information that will be gathered from memory when the operating system fails

Win32_OSRecoveryConfiguration

REGISTRY

Computer system registry management

Win32_Registry

SCSICONTROLLER

SCSI Controller management

Win32_SCSIController

SERVER

Server information management

Win32_PerfRawData_PerfNet_Server

SERVICE

Service application management

Win32_Service

SHARE

Shared resource management

Win32_Share

SOFTWAREELEMENT

Management of theelements of a software product installed on a system

Win32_SoftwareElement

SOFTWAREFEATURE

Management of software product subsets of SoftwareElement

Win32_SoftwareFeature

SOUNDDEV

Sound Device management

WIN32_SoundDevice

STARTUP

Management of commands that run automatically when users log onto the computer system

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

Management of physical connection points including ports,slots and peripherals, and proprietary connections points

Win32_SystemSlot

TAPEDRIVE

Tape drive management

Win32_TapeDrive

TEMPERATURE

Data management of a temperature sensor (electronic thermometer)

Win32_TemperatureProbe

TIMEZONE

Time zone data management

Win32_TimeZone

UPS

Uninterruptible power supply (UPS) management

Win32_UninterruptiblePowerSupply

USERACCOUNT

User account management

Win32_UserAccount

VOLTAGE

Voltage sensor (electronic voltmeter) data management

Win32_VoltageProbe

VOLUMEQUOTASETTING

Associates the disk quota setting with a specific disk volume

Win32_VolumeQuotaSetting

WMISET

WMI service operational parameters management

Win32_WMISetting

Теперь давайте попробуем использовать утилиту WMIC для работы с WMI из командной строки. Для начала выйдите из интерактивного режима консоли WMIC командой exit. Вы оказались в среде командного интерпретатора CMD. В приглашении наберите команду:

wmic process list brief

Вы получите список процессов, запущенных на вашем локальном компьютере. Теперь выполните команду:

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), наберите команду:

wmic process call /?

Среди них обратите внимание на метод 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:<frmt>». Форматирование производится с использованием технологии 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

Заключение

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

Мы обсудим написание сценариев с использованием WMI и WSH. Будут разобраны особенности использования WMI в скриптах, из тех, которые обычно вызывают наибольшие затруднения у людей, начинающих работать с этой технологией. К таким темам я отношу: построение moniker string, использование различных пространств имен WMI, связка WMI и COM, использование различных языков программирования вместе с WMI, имперсонация, аутентификация и привилегии. Наконец, наиболее интересные моменты, связанные с подключением к удаленным компьютерам и обработкой системных событий с помощью WMI. В заключении мы обсудим готовые продукты, использующие WMI и стратегию развития этой технологии, а так же ее применения в информационных системах предприятий.

Что ж, надеюсь, что первая часть статьи вас не разочаровала, а продолжение окажется для вас полезным! До скорой встречи…


Ссылки и литература


1. Distributed Management Task Force Inc. – http://www.dmtf.org/home.
2. WMI Code Creator 1.0 – http://download.microsoft.com/download/0/c/a/0ca7691c-6335-4143-8f9f-6708969f8212/WMICodeCreator.zip.
3. WMI Administrative Tools – http://download.microsoft.com/download/.NetStandardServer/Install/V1.1/NT5XP/EN-US/WMITools.exe.
4. Scriptomatic 2.0 – http://www.microsoft.com/downloads/details.aspx?FamilyID=09dfc342-648b-4119-b7eb-783b0f7d1178&DisplayLang=en.
5. Tweakomatic Utility – http://www.microsoft.com/downloads/details.aspx?FamilyID=bd328d1e-6c01-4447-bd7c-c09646d722c8&DisplayLang=en.
6. Microsoft Scripting Downloads Catalog – http://msdn.microsoft.com/downloads/list/webdev.asp.
7. WMI Downloads catalog – http://msdn.microsoft.com/library/default.asp?url=/downloads/list/wmi.asp.
8. ADSI Scriptomatic – http://www.microsoft.com/downloads/details.aspx?FamilyID=39044e17-2490-487d-9a92-ce5dcd311228&DisplayLang=en.
9. WMI Core 1.5 for Windows 9x, NT 4.0 SP4 – http://www.microsoft.com/downloads/details.aspx?FamilyID=afe41f46-e213-4cbf-9c5b-fbf236e0e875&DisplayLang=en.
10. Windows Scripting Host 5.6 for Windows 9x/NT/ME – http://www.microsoft.com/downloads/details.aspx?FamilyID=0a8a18f6-249c-4a72-bfcf-fc6af26dc390&DisplayLang=en.
11. Microsoft Windows Script 5.6 Documentation – http://www.microsoft.com/downloads/details.aspx?FamilyId=01592C48-207D-4BE1-8A76-1C4099D7BBB9&displaylang=en.
12. WQL Keywords and description – http://windowssdk.msdn.microsoft.com/library/en-us/wmisdk/wmi/wql_sql_for_wmi.asp.
13. Windows Management Instrumentation – http://msdn.microsoft.com/library/en-us/dnanchor/html/anch_wmi.asp.
Последнее обновление ( 27.05.2008 )
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017