Wmi explorer что это

Обновлено: 07.07.2024

Windows Management Instrumentation (WMI) в дословном переводе - это инструментарий управления Windows. Если говорить более развернуто, то WMI - это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows. Технология WMI - это расширенная и адаптированная под Windows реализация стандарта WBEM, принятого многими компаниями, в основе которого лежит идея создания универсального интерфейса мониторинга и управления различными системами и компонентами распределенной информационной среды предприятия с использованием объектно-ориентированных идеологий и протоколов HTML и XML.

В основе структуры данных в WBEM лежит Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы. CIM является расширяемой моделью, что позволяет программам, системам и драйверам добавлять в нее свои классы, объекты, методы и свойства.

WMI, основанный на CIM, также является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.

Важной особенностью WMI является то, что хранящиеся в нем объекты соответствуют динамическим ресурсам, то есть параметры этих ресурсов постоянно меняются, поэтому параметры таких объектов не хранятся постоянно, а создаются по запросу потребителя данных. Хранилище свойств объектов WMI называется репозиторием и расположено в системной папке операционной системы Windows:

Так как WMI построен по объектно-ориентированному принципу, то все данные операционной системы представлены в виде объектов и их свойств и методов.

Все классы группируются в пространства имен, которые иерархически упорядочены и логически связаны друг с другом по определенной технологии или области управления. В WMI имеется одно корневое пространство имен Root, которое в свою очередь имеет 4 подпространства: CIMv2, Default, Secutiry и WMI.

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

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

Каждому экземпляру класса можно обратиться по полному пути, который имеет следующую структуру:

Пример обращения к процессу с именем "Calc.exe", который запущен на локальной машине:

Экземпляры классов могут генерировать события, к которым можно подписываться. При наступлении события WMI автоматически создает экземпляр того класса, которому соответствует это событие. Такой механизм удобно использовать для выполнения определенной команды при наступлении определенного события, то есть следить за состоянием объектов операционной системы.

Общая безопасность в WMI реализуется на уровне операционной системы, а дополнительная политика безопасности основана на уровнях пространств имен и протокола DCOM. То есть если пользователь не имеет права делать какое-то действие через операционную систему, он не сможет это сделать и через WMI. Если же пользователю дано какое-то право в операционной системе, то это еще не означает, что это право будет и в WMI, так как в WMI действуют дополнительные параметры безопасности на уровне пространств имен.

Каждый объект операционной системы имеет свое описание безопасности (SD) со своим списком доступа (ACL), в котором перечислены идентификаторы пользователей (SID) и их привилегии. Каждое пространство имен может иметь собственное SD со своим ACL, где пользователям могут быть назначены разрешения на чтение данных, выполнение методов, запись классов и данных и другие. Данные о дополнительных разрешениях хранятся в репозитории WMI. Отдельные классы из пространств имен не имеют собственных описаний безопасности, они наследуют их от своего пространства имен.

По умолчанию администратор компьютера имеет полные права на использование WMI, а остальные пользователи могут лишь вызывать методы, считывать данные и записывать в репозиторий экземпляры классов провайдеров WMI.

Для доступа к инфраструктуре WMI используется протокол DCOM, через который пользователь подключается к WMI. Чтобы определить, какие права будут у подключившегося пользователя, используется механизмы олицетворения и аутентификации протокола DCOM.

Уровни олицетворения могут принимать следующие значения:

Anonymous Анонимный WMI-объект не может получить информацию о пользователе - доступ по такому типу не предоставляется
Identify Идентификация WMI-объект запрашивает маркер доступа пользователя - доступ предоставляется только локально
Impersonate Олицетворение WMI-объект имеет такие же права, какие имеет пользователь - рекомендуемый уровень для выполнения команд на удаленном компьютере
Delegate Делегирование WMI-объект может обратиться от имени пользователя к другому WMI-объекту - нерекомендуемый уровень, так как команды можно выполнять удаленно через цепочку из нескольких компьютеров

Уровни аутентификации (подлинности) могут принимать следующие значения:

None Отсутствует Проверка подлинности отсутствует
Default По умолчанию Стандартные настройки безопасности, которые задаются компьютером-целью команды
Connect Подключение Проверка только во время подключения к компьютеру-цели команды, проверка в ходе работы отсутствует
Call Вызов Проверка подлинности при каждом запросе к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
Pkt Пакет Проверка подлинности всех пакетов к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
PktIntegrity Целостность пакета Проверка подлинности и целостности всех пакетов к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
PktPrivacy Секретность пакета Проверка подлинности и целостности всех пакетов к компьютеру-цели команды, заголовки и содержимое пакетов подписываются и шифруются

wmimgmt.msc - оснастка консоли управления MMC для настройки WMI на локальном компьютере.

Administration via WMI - wmimgmt

winmgmt.exe - консольная утилита управления WMI локального компьютера.

Administration via WMI - winmgmt

wbemtest.exe - графическая утилита для взаимодействия со структурой WMI на локальном или удаленном компьютере.

Administration via WMI - wbemtest

Графическая утилита для взаимодействия со структурой WMI

wmic.exe - консольная утилита для взаимодействия со структурой WMI на локальном компьютере.

Administration via WMI - wmic

Консольная утилита для взаимодействия со структурой WMI

mofcomp.exe - компилятор MOF-файлов для расширения структуры WMI, управления библиотекой классов WMI и восстановления репозитория.

Administration via WMI - mofcomp

Для обращения к объектам WMI используется специфический язык запросов WMI Query Language (WQL), который является одним из разновидностей SQL. Основное его отличие от ANSI SQL - это невозможность изменения данных, то есть с помощью WQL возможна лишь выборка данных с помощью команды SELECT. Помимо ограничений на работу с объектами, WQL не поддерживает такие операторы как DISTINCT, JOIN, ORDER, GROUP, математические функции. Конструкции IS и NOT IS применяются только в сочетании с константой NULL.

Запросы WQL обычно применяются в скриптах, но их также можно протестировать в программе Wbemtest и в консольной утилите Wmic (утилита wmic не требует написания ключевого слова SELECT и полей выборки)

Общий синтаксис запроса WQL выглядит так:

Как видно из примеров, оператор FROM - это источник (класс), коллекцию экземпляров которого нужно получить, а оператор WHERE - это фильтр в запросе.

В скриптах для подключения к WMI используются два метода: с использованием локатора (SWbemLocator) и с использованием моникера (WinMgmts). Метод локатора позволяет установить соединие с пространством имен от имени определенной учетной записи. Метод моникера разрешает подключаться к WMI только от имени текущей учетной записи.

Использование этого метода необходимо, когда в сценарии нужно явно задать имя и пароль учетной записи для подключения к WMI. Объект SWbemLocator создается так:

Подключение к репозиторию WMI производится с помощью метода ConnectServer:

Безопасность объекта указывается с помощью свойства Security_, в котором указывается уровень олицетворения и привилегии.

Пример использования локатора:

Моникер - это строка, задающая путь к классу WMI, экземпляр которого должен быть создан. Моникер состоит из обязательного префикса "winmgmts:", необязательных настроек безопасности, необязательного пути к требуемому классу:

Пример использования моникера:

В результате подключения к WMI получается объект SWbemServices, который обладает определенными свойствами и методами. Наиболее часто используемые из них - это Get, ExecQuery, ExecMethod.

Метод Get используется для возвращения определения класса или экземпляра управляемого ресурса:

Пример использования метода Get:

Метод ExecQuery используется для выполнения запросов на языке WQL:

Пример использования метода ExecQuery:

Метод ExecMethod используется для выполнения метода указанного объекта:

Пример использования метода ExecMethod:

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

Аналогично синхронным методам WMI позволяет выполнять команды асинхронно, то есть не дожидаться результатов выполнения очередного запроса и продолжать работу сценария или программы. Названия таких асинхронных методов имеют окончание "Async", а работа с ними почти не отличается от обычных методов, но должны быть использованы два обязательных параметра: ссылка на специальный объект "слив событий" и контекстная информация объекта.

Объект "слива событий" (от английского "sink" - раковина) создается следующим образом:

Наиболее часто используемые события, обрабатываемые таким "сливом" асинхронных методов, - это OnObjectReady и OnCompleted. Как можно догадаться из названий событий, первое происходит, когда возвращается очередной объект, порожденный асинхронным запросом. Второе происходит после полного завершения асихронного метода. Событие OnObjectReady выдает на выход объект, который был запрошен асихронной операцией, а событие OnCompleted - код ошибки или 0.

Пример использования асинхронного метода:

Работа с объектами и коллекциями объектов, полученных в результате запросов

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

Коллекция объектов всегда обладает общими для всех экземпляров свойствами, наиболее часто используемые свойства - это Count и Item.

Count - это свойство коллекции объекта, которое содержит количество элементов коллекции.

Item(mObjectPath) - это метод, который возвращает один объект коллекции, соответствующий указанному пути.

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

ExecMethod_(mMethod, mWbemInParamsm, mFlags, mWbemNamedValueSet) - это метод для исполнения классового метода у используемого объекта.

Put_(mFlags, mWbemNamedValueSet) - это метод для записи измененных свойств объекта в репозиторий WMI и в реальный объект.

Пример использования метода Put_ - изменение метки диска:

Пример использование класса CIM_DataFile для переименования файлов:

Аналогично приведенному примеру можно совершать и другие действия с файлами, так как класс CIM_DataFile поддерживает методы: копирование, удаление, переименование, NTFS-сжатие, смена разрешений, смена владельца.

Пример использования классов оборудования компьютера для получения информации о количестве портов USB 2.0 и используемых USB-устройствах:

Пример использования класса свойств принтеров для получения информации о настройках принтеров:

Пример использования класса свойств сетевого адаптера для изменения конфигурации сетевой карты - перевода с DHCP на статическую конфигурацию:

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

Первый способ берет свое начало из скриптов VBS. Он использует обращение к инстументу winmgmts, как это делалось в методе моникера:

Пример запроса модели комьютера (консольное приложение)

Второй способ является более правильным с точки зрения Visual Studio. Он использует классSystem.Managementдля запросов к WMI, в котором указываются пространство WMI, параметры подключения и WQL запрос:

Использование полученных объектов аналогично использованию в скриптах.

Пример запроса сервисов локального комьютера (консольное приложение):

Приложение разделено на две части: класс, который компилируется в динамическую библиотеку DLL, и программа, которая собирается в исполняемый файл EXE.

Листинг файла WMIClass.vb:

Листинг файла TestModule.vb:

Использование специальных средств для написания запросов

Для того, чтобы облегчить написание скриптов и программ, существуют специальные утилиты, которые помогают просмотреть структуру пространства WMI и показавают примеры использования всех классов. Наиболее распространенные утилиты - это Scriptomatic и WMI Code Creator.

Инструмент Scriptomatic предствляет из себя HTA-приложение, которое генерирует код, использующий WMI, на VBSScript, JScript, Perl и Python. Сам по себе WMI может оказаться трудным для изучения, поэтому рекомендуется использовать Scriptomatic для освоения классов WMI, а также для быстрого создания шаблонов обращения к ресерсум WMI. Scriptomatic позволяет выбрать интересующий объект WMI, а затем генерирует код на указанном языке программирования. Полученный код можно выполнить непосредственно в оболочке программы, а результаты вывести в консоль, текстовый файл, HTML, Excel или XML. Инструмент доступен на сайте Microsoft по этой ссылке.

Administration via WMI - wmiscriptomatic

Administration via WMI - wmiscriptomatic

Программа WMI Code Creator представляет из себя генератор кода, который использует WMI для получения информации и для осуществления задач упраления компьютерами. Программа может помочь научиться использовать WMI-скрипты и WMI-приложения для управления как локальным, так и удаленным компьютером. Инструмент доступен на сайте Microsoft по этой ссылке.

Используя WMI Code Creator можно найти любую информацию о компьютере: имя и версия операционной системы, свободное место на диске, состояние сервисов и так далее. Можно выполнить метод из WMI класса для осуществления управления компьютером: создать или удалить сервис, запустить или закрыть программы, назначить разрешения на папку или файл и многое другое. Этот инструмент так же позволяет просматривать доступное WMI-пространство и WMI-классы, чтобы найти нужную для программирования инстанцию с ее описанием, свойствами, методами и примером использования.

Administration via WMI - wmicodecreator

Administration via WMI - wmicodecreator

Administration via WMI - wmicodecreator

Administration via WMI - wmicodecreator

Итак, Windows Management Instrumentation - это мощный инструмент для администрирования операционных систем семейства Windows с помощью скриптов. С помощью WMI можно управлять устройствами, учетными записями, сервисами, процессами, сетевыми интерфейсами и другими программами, которые расширяют базовую структуру WMI своими классами.

Помимо скриптов WMI может применяться и в полноценных программах, то есть программисты могут внедрять запросы к WMI в исполняемый код, завязывая свою программу с работой WMI, благодаря чему программа становится проще и легче, но зависимой от правильности работы Windows Management Instrumentation.

Windows Management Instrumentation (WMI) в дословном переводе — это инструментарий управления Windows. Если говорить более развернуто, то WMI — это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows. Звучит страшно, а на самом деле это достаточно богатый набор инструментов, основные функции которого:

  • Получать данные о системах (диски, процессоры, процессы, журналы событий и многое-другое)
  • Выполнять широкий спектр административные задачи: от завершения процесса, до управления DHCP и DNS
  • Создавать скрипты, срабатывающие при наступлении каких-либо событий в системе
  • Получать данные счетчиков производительности

В WMI есть иерархическая адресация всех ресурсов - что-нибудь типа WinMgmts:!//myServer/root/cimv2:Win32_LogicalDisk) , но вместе с иерархическим доступом к ресурсам есть и SQL-подобный язык получения данных. Этот язык обычно называется WQL и в сети есть множество примеров его использования. На инфостарте можно обратить внимание на следующие статьи:

В MSDN можно ознакомиться начиная со следующих статей:

Результатом этого запроса будет табличка, начинающаяся примерно так:

CommandLine Handle Name
0 System Idle Process
4 System
224 smss.exe
320 csrss.exe
372 csrss.exe
380 wininit.exe
412 winlogon.exe
476 services.exe
484 lsass.exe
492 lsm.exe
588 svchost.exe
656 svchost.exe
744 svchost.exe
792 svchost.exe
840 svchost.exe
880 svchost.exe
920 svchost.exe
508 svchost.exe
1096 spoolsv.exe
1156 hasplms.exe
1236 svchost.exe
1316 vmtoolsd.exe
1680 TPAutoConnSvc.exe
1900 dllhost.exe
1980 msdtc.exe
taskhost.exe 1724 taskhost.exe
TPAutoConnect.exe -q -i vmware -a COM1 -F 30 616 TPAutoConnect.exe

Зачем нужен WMI-обозреватель?

WMI документирована хорошо, но отлаживать WQL запросы непосредственно в 1С не было возможности, а пользоваться внешними утилитами ради пары строк запроса вовсе не хочется. Для этой цели я сделал простенький WMI-обозреватель.

Пользовательский интерфейс WMI-обозревателя

Интерфейс состоит из 2 закладок: Запрос и Настройки. На закладке Запрос есть только поле для ввода запроса. По умолчанию запрос выполняется на текущем ПК в файловой версии и на сервере предприятия (от имени rphost) в клиент-серверной версии. По кнопке "Выполнить запрос" появляется таблица с результатами.

Если настройки по умолчанию не устраивают, переходим на вторую закладку. Там можно настроить:

  • Имя сервера с которого снимаются данные
  • Если установлен флажок "Собирать системные свойства", то в таблице будут выданы внутренние свойства каждой записи. Обычно это не требуется.
  • Если установлен флажок "Получать путь", то в таблице будут выдана колонка с иерархическим путём записи. Имеет смысл, если этот путь нужен для отладки запроса.
  • Если установлен флажок "Собирать методы", то в таблице первой колонкой будет поле "Methods". Если два раза кликнуть мышкой или нажать Enter на этой колонке, то будет выдан табличный документ с методами, которые можно применять в программном коде к значению WMI данной строки



Как можно использовать WMI-обозреватель?

Здесь я приведу просто набор запросов и пояснение, что можно получить этим запросом. Проверяйте, экспериментируйте.

Запрос Пояснение
SELECT Handle, Name, VirtualSize FROM Win32_Process WHERE VirtualSize>100000000 AND CreationDate > "20130604000000.000000+420" Выводится ID процесса, название процесса, размер адресуемого пространства для процессов, созданных позднее 4 июня 2013 года (в моём часовом поясе)
SELECT * FROM Win32_Service WHERE PathName LIKE "%ragent%" Все службы 1С со всеми данными по ним
SELECT Name, Capacity, FreeSpace FROM Win32_Volume Диски, их размер и свободное место
SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor Текущая загрузка процессора
SELECT PercentDiskTime, AvgDiskQueueLength, DiskReadBytesPerSec, DiskWriteBytesPerSec FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk Текущая загрузка диска
Select * From meta_class Выполняется долго, содержит очень много колонок! Выводит все классы WMI

Как устроен WMI-обозреватель?

Весь WMI обозреватель благополучно поместился в одну управляемую форму (прямо скажу - не сильно сложную). Если по каким-то причинам Вы не можете скачать решение, то программный код этой формы приведен ниже.

&НаКлиенте
Процедура РезультатЗапросаВыбор ( Элемент , ВыбраннаяСтрока , Поле , СтандартнаяОбработка )
// При двойном клике на медоды, выводим их в табличный документ
Если Поле . Имя = "РезультатЗапросаMethods" Тогда
Методы = Элемент . ТекущиеДанные . Methods ;
Если Методы . Количество ()> 0 Тогда
ТабличныйДокумент = Новый ТабличныйДокумент ;
СчСтрок = 1 ;
Для каждого Метод Из Методы Цикл
ТабличныйДокумент . Область ( СчСтрок , 1 , СчСтрок , 1 ). Текст = Метод ;
СчСтрок = СчСтрок + 1 ;
КонецЦикла;
ТабличныйДокумент . Показать ();
КонецЕсли;
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьЗапрос ( Команда )
ВыполнитьЗапросНаСервере ();
КонецПроцедуры

&НаСервере
Процедура ВыполнитьЗапросНаСервере ()

WMIЗапрос = ПолучитьCOMОбъектWMI ( Объект . ИмяСервера );

// "*" желательно заменить для ускорения на конкретный список полей
WMIРезультаты = WMIЗапрос . ExecQuery ( Объект . ТекстЗапроса );

РезультатЗапроса = ПреобразоватьРезультатыWMIвТаблицуЗначений ( WMIРезультаты ,
Объект . СобиратьСистемныеСвойства ,
Объект . СобиратьМетоды ,
Объект . ПолучатьПуть ,
Ложь);
//РезультатЗапроса.Колонки.Удалить("Значение"); // В ней содержатся "COMОбъект", которые не выводятся

ВывестиТаблицуЗначений ( "РезультатЗапроса" , РезультатЗапроса );

// Перезаполняет реквизит формы из таблицы значений.
// Предполагается, что реквизит уже есть на форме. Перезаполнение происходит
// полностью вместе с пересозданием колонок. Так медленнее, зато проще.
//
// Параметры:
// ИмяРеквизита - Строка - Имя заполняемого реквизита формы
// ЗначениеРеквизита - ТаблицаЗначений - чем заполнять реквизит
//
&НаСервере
Процедура ВывестиТаблицуЗначений ( ИмяРеквизита , ЗначениеРеквизита )

ЭлементФормы = Элементы [ ИмяРеквизита ];
ПутьКДанным = ЭлементФормы . ПутьКДанным ;

МассивДобавляемыхРеквизитов = Новый Массив ;
МассивУдаляемыхРеквизитов = Новый Массив ;

Для каждого ТекРеквизит из ПолучитьРеквизиты ( ПутьКДанным ) Цикл
МассивУдаляемыхРеквизитов . Добавить ( ТекРеквизит . Путь + "." + ТекРеквизит . Имя );
ИмяЭлементаВТаблице = ИмяРеквизита + ТекРеквизит . Имя ;
Элемент = Элементы . Найти ( ИмяЭлементаВТаблице );
Если не Элемент = Неопределено Тогда
Элементы . Удалить ( Элемент );
КонецЕсли;
КонецЦикла;

Для Каждого Колонка Из ЗначениеРеквизита . Колонки Цикл
ДобавляемыйРеквизит = Новый РеквизитФормы ( Колонка . Имя , Колонка . ТипЗначения , ПутьКДанным , Колонка . Имя );
МассивДобавляемыхРеквизитов . Добавить ( ДобавляемыйРеквизит );
КонецЦикла;

ИзменитьРеквизиты ( МассивДобавляемыхРеквизитов , МассивУдаляемыхРеквизитов );
ЗначениеВРеквизитФормы ( ЗначениеРеквизита , ПутьКДанным );

Для Каждого ТекРеквизит Из МассивДобавляемыхРеквизитов Цикл

ИмяЭлементаВТаблице = ИмяРеквизита + ТекРеквизит . Имя ;
Элемент = Элементы . Добавить ( ИмяЭлементаВТаблице , Тип ( "ПолеФормы" ), ЭлементФормы );
Элемент . Вид = ВидПоляФормы . ПолеВвода ;
Элемент . ПутьКДанным = ПутьКДанным + "." + ТекРеквизит . Имя ;
Элемент . ТолькоПросмотр = Истина;

////////////////////////////////////////////////////////////////////////////////
// Блок функций WMI, если хотите использовать их в своих программах, то лучше
// вынести в отдельный модуль. Модуль лучше сделать серверным, потому что
// используются таблицы значений. Не забудьте удалить директивы компиляции.

// Возвращает настроенный COM-объект WMI
//
// Параметры:
// ИмяСервера - Строка, имя или IP-адрес компьютера с которого будут получаться
// значения счетчиков производительности. Можно не указывать, если
// значения получаются со своего компьютера
// ИмяСервераИсполнителя - Строка, имя или IP-адрес компьютера на котором создаётся
// COM объект. Обычно можно не указывать
// ТочкаПодключения - Строка - по умолчанию "root\cimv2", но можно указать и своё
//
// Возвращаемое значение:
// COMОбъект - objWMIService
//
&НаСервереБезКонтекста
Функция ПолучитьCOMОбъектWMI (Знач ИмяСервера = Неопределено, Знач ИмяСервераИсполнителя = Неопределено, Знач ТочкаПодключения = Неопределено) Экспорт

//http://msdn.microsoft.com/en-us/library/windows/desktop/aa389763(v=vs.85).aspx
Если Не ЗначениеЗаполнено ( ИмяСервераИсполнителя ) Тогда
Locator = Новый COMОбъект ( "WbemScripting.SWbemLocator" );
Иначе
Locator = Новый COMОбъект ( "WbemScripting.SWbemLocator" , ИмяСервераИсполнителя );
КонецЕсли;

Если Не ЗначениеЗаполнено ( ИмяСервера ) Тогда
ИмяСервера = "." ;
КонецЕсли;

Если Не ЗначениеЗаполнено ( ТочкаПодключения ) Тогда
ТочкаПодключения = "root\cimv2" ;
КонецЕсли;

objWMIService = Locator . ConnectServer ( ИмяСервера , ТочкаПодключения );
Возврат objWMIService ;

// Преобразует результаты WMI-запроса в таблицу значений
//
// Параметры:
// РезультатыWMI - COMОбъект - "сырые" результаты WMI-запроса
// СобиратьСистемныеСвойства - Булево - признак необходимости сбора системных свойств, необязательный, по умолчанию Ложь
// СобиратьМетоды - Булево - признак необходимости доступных методов, необязательный, по умолчанию Ложь
// ПолучатьПуть - Булево - получать или не получать колонку с полным путем к значению в терминах WMI, по умолчанию Истина.
// ПолучатьЗначениеWMI - Булево - получать или не получать колонку с самим значением WMI строки, по умолчанию Истина
//
// Возвращаемое значение:
// ТаблицаЗначений - Преобразованная таблица значений (нетипизированная, потому что добывать типы сложно)
//
// Примечание:
// 1. ПолучатьЗначение следует устанавливать в Ложь, если планируется вывод на форму (COM-объект,
// содержащийся в колонке нормально не выводится), в Истина, если планируется вызов методов или другая доп. логика
// 2. ПолучатьПуть можно установить в Ложь, если нужно минимизировать передачу данных
&НаСервереБезКонтекста
Функция ПреобразоватьРезультатыWMIвТаблицуЗначений ( РезультатыWMI ,
Знач СобиратьСистемныеСвойства = Ложь,
Знач СобиратьМетоды = Ложь,
Знач ПолучатьПуть = Истина,
Знач ПолучатьЗначениеWMI = Истина) Экспорт

ТаблицаWMI = Новый ТаблицаЗначений ;
Если ПолучатьЗначениеWMI Тогда
ТаблицаWMI . Колонки . Добавить ( "Значение" );
КонецЕсли;
Если ПолучатьПуть Тогда
ТаблицаWMI . Колонки . Добавить ( "Path" );
КонецЕсли;
Если СобиратьМетоды Тогда
ТаблицаWMI . Колонки . Добавить ( "Methods" );
КонецЕсли;

Для Каждого ЗначениеWMI Из РезультатыWMI Цикл
СтрокаТаблицыWMI = ТаблицаWMI . Добавить ();
Если ПолучатьЗначениеWMI Тогда
СтрокаТаблицыWMI . Значение = ЗначениеWMI ;
КонецЕсли;
Свойства = ПолучитьСтруктуруИзЗначенияWMI ( ЗначениеWMI . Properties_ );

ДобавитьСтруктуруВСтрокуТаблицаЗначений ( СтрокаТаблицыWMI , Свойства );
Если СобиратьСистемныеСвойства Тогда
СистемныеСвойства = ПолучитьСтруктуруИзЗначенияWMI ( ЗначениеWMI . SystemProperties_ );
ДобавитьСтруктуруВСтрокуТаблицаЗначений ( СтрокаТаблицыWMI , СистемныеСвойства );
КонецЕсли;
Если ПолучатьПуть Тогда
СтрокаТаблицыWMI . Path = ЗначениеWMI . Path_ . Path ;
КонецЕсли;

Если СобиратьМетоды Тогда

СтрокаТаблицыWMI . Methods = Новый Массив ;

// Описания методов возвращаем для людей, поэтому описание "человеколюбивое"
Для Каждого МетодWMI из ЗначениеWMI . Methods_ Цикл

Если МетодWMI . OutParameters <> Неопределено Тогда
Для Каждого ПараметрWMI из МетодWMI . OutParameters . Properties_ Цикл
КвалификаторыПраметра = ПолучитьСтруктуруИзЗначенияWMI ( ПараметрWMI . Qualifiers_ );
ОписаниеМетода = ОписаниеМетода + Символы . ПС + "Выходной параметр: " + ПараметрWMI . Name ;
КонецЦикла;
КонецЕсли;

СтрокаТаблицыWMI . Methods . Добавить ( ОписаниеМетода );

// Преобразует строку результатов WMI в структуру
//
// Параметры:
// ЗначениеWMI - COMОбъект - строка результатов WMI-запроса
//
// Возвращаемое значение:
// Структура - Коллекция значнний строки результатов WMI-запроса
//
&НаСервереБезКонтекста
Функция ПолучитьСтруктуруИзЗначенияWMI ( ЗначениеWMI )

Рез = Новый Структура ;
Для каждого СвойствоWMI из ЗначениеWMI Цикл
Если ТипЗнч ( СвойствоWMI . Value ) = Тип ( "COMSafeArray" ) Тогда
Рез . Вставить ( СвойствоWMI . Name , СвойствоWMI . Value . Выгрузить ()); // возможно массив надо будет переделать
Иначе
Рез . Вставить ( СвойствоWMI . Name , СвойствоWMI . Value );
КонецЕсли
КонецЦикла;

// Добавляет все значения структуры в строку ТЗ. Если не хватает колонок - добавляет нетипизированную
//
// Параметры:
// ТекущаяСтрокаТаблицы - СтрокаТаблицыЗначений - Строка в которую записываются данные
// ДобавляемаяСтруктура - Структура - структура с значениями
//
// Возвращаемое значение:
// Структура - Коллекция значнний строки результатов WMI-запроса
//
&НаСервереБезКонтекста
Процедура ДобавитьСтруктуруВСтрокуТаблицаЗначений ( ТекущаяСтрокаТаблицы , ДобавляемаяСтруктура )

ТаблицаЗначений = ТекущаяСтрокаТаблицы . Владелец ();
Колонки = ТаблицаЗначений . Колонки ;
Для Каждого ЭлементСтруктуры Из ДобавляемаяСтруктура Цикл
Если Неопределено = Колонки . Найти ( ЭлементСтруктуры . Ключ ) Тогда
Колонки . Добавить ( ЭлементСтруктуры . Ключ );
КонецЕсли;
ТекущаяСтрокаТаблицы [ ЭлементСтруктуры . Ключ ] = ЭлементСтруктуры . Значение ;
КонецЦикла

WMI расшифровывается как инструментарий управления Windows и представляет собой реализацию WBEM (Web-Based Enterprise Management), инновационной технологии, которая позволяет контролировать и контролировать управляемые ресурсы по сети. К этим ресурсам относятся файловые системы, жесткие диски, процессы, настройки ОС, общие ресурсы, службы, сетевые компоненты, настройки реестра, пользователи, журналы событий, группы и многие другие.

WMI позволяет вам также контролировать различные счетчики производительности. Приложение Microsoft поставляется с интегрированными возможностями WMI.

WMI Explorer - это приложение, которое позволяет просматривать полный набор объектов WMI, классов управления и свойств. Утилита позволяет без особых усилий просматривать настройки и объекты на удаленных компьютерах. Любой WQL-запрос может быть выполнен, и программа отобразит набор результатов для вас.

WMI Explorer может использоваться как отдельное приложение. Вы также можете использовать в качестве вспомогательного инструмента для HostMonitor.

Название WMI Explorer
Версия 1,16
Разработчик KS-Soft
Домашняя страница продукта WMI Explorer
Лицензия Бесплатно (Freeware)
Загрузки прошлой недели 4
Все время загрузки 711
Имя файла wmiexplorer.zip
Размер файла 0.5Мб
Контрольная сумма MD5 E6A80B005C4F89F455DF37474EB46609
Поддержка ОС Windows All
Категория -

Похожие программы

SoftPerfect Network Scanner Portable 7.2.1

Управляйте и контролируйте свою сеть с помощью этого продвинутого сканера IPv4 и IPv6.

PRTG Network Monitor 19.2.49.2018

Инструмент, который поможет вам легко контролировать вашу сеть.

SoftPerfect Network Scanner 7.2.1

Мощное программное обеспечение для сканирования NetBIOS, IP и SNMP.

EMCO Network Software Scanner 2.0.6

Бесплатный инструмент для аудита установленных приложений в сетях Windows.

Network Inventory Advisor 5.0.155

Выполните инвентаризацию аппаратного и программного обеспечения с помощью этого мощного инструмента.

Комплекты Intel® NUC NUC7i [x] BN и NUC6CAY поставляются с проводником Windows Management Instrumentation (WMI) Explorer * в BIOS. С помощью проводника WMI вы можете запросить и управлять индикатором звонка и ИНДИКАТОРом кнопки из среды операционной системы. Проводник WMI позволяет просматривать и просматривать пространства имен, классы, экземпляры и свойства инструментария WMI в одной области представления.

Использование инструментария WMI Explorer *

Щелкните или тему, чтобы узнать подробности:

Включить управление программным обеспечением индикатора

Чтобы активировать программу управления ИНДИКАТОРом в BIOS перед программированием:

  1. Нажмите F2 во время загрузки, чтобы войти в программу BIOS Setup.
  2. Переходите на расширенные возможности>.
  3. В области «вторичные параметры питания» установите переключатель « Индикатор звонка » и/или « кнопка» на «программное Управление».

Ring LED

Корпорация Майкрософт рекомендует поставщикам WMI реализовать новые классы WMI в файлах MOF (Managed Object Format).
Мы предоставляем специализированный MOF-код с кодом американский язык ЖЕСТОВ, чтобы получить доступ к инструменту ИНДИКАТОРов программирования в проводнике WMI.

Используйте этот MOF-процессор ниже, чтобы получить доступ к средству программирования ИНДИКАТОРов в проводнике WMI:

  1. GUID: 8C5DA44C-CDC3-46b3-8619-4E26D34390B7
  2. _UID: 0
  3. Код объекта (AA): 65, 65
  4. Количество экземпляров: 1
  5. Описание: метод получения или установки кнопки или состояния СВЕТОИНДИКАТОРА звонка.
  6. Имя объекта WMI: «CISD_WMI»
  7. КОД метода (1): «-штат»
  8. Параметр 1: UINT32 (ввод)
  9. Параметр 2: Package (массив данных)
  10. КОД метода (2): «Сетстате»
  11. Параметр 1: UINT32 (ввод)
  12. Параметр 2: Package (массив данных)

Имя и аргументы метода WMI для управления ИНДИКАТОРами

Текущий светодиодный индикатор мигания/состояния затухания

01h: 1Hz
02h: 0,25 Гц
03h: исчезание
04h: всегда включено

Использование BIOS AY0038 или BN0043 и более поздних версий

Текущий светодиодный индикатор мигания/состояния затухания
01h: 1Hz
02h: 0,25 Гц
03h: 1Hz выцветание
04h: всегда включено
05h: от 0,5 Гц
06h: до 0,25 Гц выцветание
07h: эффект 0,5 Гц

Цвет индикатора кнопки: (параметр «получить световой индикатор питания»)

00h: Disable
01H: синий
02h: оранжевый

Цвет индикатора звонка: (приобретите настройки СВЕТОИНДИКАТОРА Ring)

00h: Disable
01H: голубой
02h: розовый
03h: желтый
04h: синий
05h: Red
06h: зеленый
07h: белый

Текущий светодиодный индикатор мигания/состояния затухания

01h: 1Hz
02h: 0,25 Гц
03h: исчезание
04h: всегда включено

Использование BIOS AY0038 или BN0043 и более поздних версий

Текущий светодиодный индикатор мигания/состояния затухания

01h: 1Hz
02h: 0,25 Гц
03h: 1Hz выцветание
04h: всегда включено
05h: от 0,5 Гц
06h: до 0,25 Гц выцветание
07h: эффект 0,5 Гц

Цвет индикатора кнопки: (параметр «получить световой индикатор питания»)

00h: Disable
01H: синий
02h: оранжевый

Цвет индикатора звонка: (приобретите настройки СВЕТОИНДИКАТОРА Ring)

00h: Disable
01H: голубой
02h: розовый
03h: желтый
04h: синий
05h: Red
06h: зеленый
07h: белый

00h: нет ошибок
E1h: ошибка (функция не поддерживается)
E2h: ошибка (неопределенное устройство)
E3h: ошибка (EC не отвечает)
E4h: ошибка (недопустимый параметр)
Ефх: ошибка (непредвиденная ошибка)
Другие: зарезервировано

00h: нет ошибок
E1h: ошибка (функция не поддерживается)
E2h: ошибка (неопределенное устройство)
E3h: ошибка (EC не отвечает)
E4h: ошибка (недопустимый параметр)
Ефх: ошибка (непредвиденная ошибка)
Другие: зарезервировано

00h: нет ошибок
E1h: ошибка (функция не поддерживается)
E2h: ошибка (неопределенное устройство)
E3h: ошибка (EC не отвечает)
E4h: ошибка (недопустимый параметр)
Ефх: ошибка (непредвиденная ошибка)
Другие: зарезервировано

Пример кода для вызова метода Сетстате в интерфейсе WMI LED:

Sample code to invoke the SetState Method in the LED WMI interface

Дополнительные сведения о том, как написать код для вызова инструментария WMI, см. в следующих случаях:

Читайте также: