Обработка результатов запросов к WMI

Обработка результатов запросов к WMI

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

strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set Swbemobjectset = objWMIService.ExecQuery _ ("Select * from Win32_LogonSession")


В результате выполнения этого запроса вам вернется коллекция Swbemobjectset с объектами Swbemobject.
В самой коллекции интерес может представлять только свойство Count (количество элементов в коллекции) и метод Item() (который позволяет вернуть нужный элемент). А вот сами элементы коллекции - объекты Swbemobject несут гораздо больше информации.
Полученные объекты обладают как рядом свойств и методов, специфичных для данного класса, так и общими свойствами и методами. Для того, что бы отличить общие методы и свойства от специфических, названия универсальных (общих) методов и свойств заканчиваются символом подчеркивания ("_").
Ниже приведены наиболее часто встречающиеся общие методы и свойства.


Свойство / метод
 

Описание
 
Methods_ Содержит коллекцию методов класса. Только чтение.
Properties_ Содержит коллекцию свойств класса. Только чтение.
IsArray Работает это свойство с массивом значений или нет. Только чтение.
Qualifiers_ Содержит коллекцию допустимых значений для этого свойства, если для него такой набор предусмотрен. Только чтение.


Специфические методы и свойства для каждого класса описаны в документации. Рассмотрим вывод свойств, присущий определённому классу в данный момент.

strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set Swbemobjectset = objWMIService.ExecQuery _ ("Select * from Win32_LogonSession") For Each Swbemobject in Swbemobjectset Wscript.Echo "AuthenticationPackage: " _ & Swbemobject.AuthenticationPackage &VBCR _ & "Caption: " & Swbemobject.Caption &VBCR _ & "Description: " & Swbemobject.Description &VBCR _ & "InstallDate: " & Swbemobject.InstallDate &VBCR _ & "LogonId: " & Swbemobject.LogonId &VBCR _ & "Name: " & Swbemobject.Name &VBCR _ & "LogonType: " & Swbemobject.LogonType &VBCR _ & "StartTime: " & Swbemobject.StartTime &VBCR _ & "Status: " & Swbemobject.Status Next


Большинство примеров, которые приводятся в этом разделе сайта, будут похожи на вышеприведенный пример. Отличаться будут имена классов и имена свойств.

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

Dim colItems Dim objItem Dim aProperty strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter") For Each objItem in colItems ss = "" For Each prop in objItem.Properties_ If IsArray(prop) Then ss= ss & prop.Name & ": " & Join(prop, ", ") &VBCR Else If prop.Value <> "" Then ss= ss & prop.Name & ": " & prop.Value & VBCR End If End If Next Wscript.Echo ss Next


Следует отметить, что служба WMI достаточно самодокументирована. Большой объем информации о классе можно получить программно. Так, подключаясь непосредственно к классу можно получить список его свойств:

Dim colItems strComputer = "." strNS = "Root\CIMV2" 'имя пространства имён strClass = "Win32_NetworkAdapterConfiguration" 'имя класса Set colItems = GetObject("winmgmts:\\" & strComputer & "\" & strNS & ":" & strClass) ss = "" For Each prop in colItems.Properties_ ss= ss & prop.Name & VBCR Next Wscript.Echo ss


Аналогично можно получить и список его методов:

Dim colItems strComputer = "." strNS = "Root\CIMV2" 'имя пространства имён strClass = "Win32_NetworkAdapterConfiguration" 'имя класса Set colItems = GetObject("winmgmts:\\" & strComputer & "\" & strNS & ":" & strClass) ss = "" For Each prop in colItems.Methods_ ss= ss & prop.Name & VBCR Next Wscript.Echo ss


Получение коллекции классов выбранного пространства имён:

strComputer = "." 'имя компьютера strNS = "Root\Default" 'имя пространства имён '========================================================== 'Подключение к выбранному пространству имён WMI Set objService = GetObject("winmgmts:\\" & strComputer & "\" & strNS) 'Получение коллекции классов выбранного пространства имён Set colClasses = objService.SubclassesOf() 'Перебор коллекции классов ss = "" For Each objClass In colClasses ss= ss & objClass.Path_.Class & VBCR Next Wscript.Echo ss


Получение имеющихся квалификаторов определенного метода и класса:

strComputer = "." 'имя компьютера strNS = "Root\CIMV2" 'имя пространства имён strClass = "Win32_Process" 'имя класса strMethod = "Create" 'имя метода '========================================================== 'Подключение к выбранному классу WMI Set objClass = GetObject("winmgmts:\\" & strComputer & "\" & strNS & ":" & strClass) 'Перебор квалификаторов метода ss = "" For Each objQualifier In objClass.Methods_(strMethod).Qualifiers_ If IsArray(objQualifier.Value) Then ss= ss & objQualifier.Name & " = " & Join(objQualifier.Value) & VBCR Else ss= ss & objQualifier.Name & " = " & objQualifier.Value & VBCR End If Next Wscript.Echo ss






Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).






  TopList Rambler Top100 own counter Valid XHTML 1.0 Strict Valid CSS Rambler Top100

Фитотерапия Молитвы Водолечение Юмор Форум Кладовка link О авторе

Фитотерапия Молитвы Водолечение Юмор Форум Кладовка Ссылки О авторе Отправить сообщение Карта сайта Поиск по сайту Главная страница

Copyright © 1999 - 2017  Бронислав Краснер