Опрос устройств с поддержкой инфраструктуры управления windows wmi

Команда WMIC – выполнить сценарий WMI в командной строке.

Команда WMIC (Windows Management Instrumentation Command) используется для получения сведений об оборудовании и системе, управления процессами и их компонентами, а также изменения настроек с использованием возможностей инструментария управления Windows ( W indows M anagement I nstrumentation или WMI) .

Инструментарий управления Windows (WMI) – это набор программных средств, обеспечивающий управление системой с использованием сценариев, выполняемых в среде Windows Script Host ( ранее — Windows Scripting Host ) или в командной строке с помощью утилиты WMIC.EXE . Windows Script Host или сокращенно WSH — это компонент Microsoft Windows, предназначенный для запуска сценариев на скриптовых языках JScript и VBScript. Сценарии WSH обычно используются в тех случаях, когда требуется выполнить набор каких-либо действий, требующих написания относительно сложного исходного кода, но нередко в повседневной практике администрирования, удобнее воспользоваться возможностями командной строки WMIC .

Технология WMI — это расширенная и адаптированная под Windows реализация стандарта Web-Based Enterprise Management ( WBEM ), принятого многими крупными компаниями в качестве универсального интерфейса мониторинга и управления различными системами и компонентами распределенной информационной среды предприятия с использованием объектно-ориентированных идеологий и протоколов HTML и XML. В основе структуры данных в WBEM лежит Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы. Практически, WMI, основанный на CIM, является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.

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

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

Winmgmt.exe – консольная утилита управления WMI. Выполняет аналогичные действия, что и консоль MMC wmimgmt.msc. Кроме того, в Windows 2000 является исполняемым файлом сервиса WMI в системе. Для запуска из консоли используется с опцией /exe (winmgmt.exe /exe). Начиная с Windows XP, исполняемым файлом WMI является библиотека wmisvc.dll , загружаемая с помощью хост-контроллера svchost.exe (Generic Host Process for Win32 Services). В Windows 7-10 утилита winmgmt.exe позволяет выполнить конфигурирование службы WMI как для группы SVChost под именем netsvcs , так и для отдельной группы с именем Winmgmt . В среде Windows 10 группировка служб, запускаемых с помощью svchost.exe , практически не используется – большинству служб соответствует свой собственный процесс svchost.exe.

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

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

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

Основной каталог данных WMI при стандартной установке Windows — C:\Windows\System32\wbem .

Формат командной строки:

wmic [глобальные параметры]

Если параметры командной строки отсутствуют, то утилита wmic.exe переходит в интерактивный режим, с отображением приглашения к вводу команд:

Подсказку по работе с утилитой wmic.exe можно получить по команде:

wmic /? — отобразить общую справку.

wmic /?:BRIEF — отобразить краткую справку.

wmic /?:FULL — отобразить полную стправку.

Содержание общей справки:

Краткая справка по содержанию практически ничем не отличается от справки по умолчанию, за исключением того, что часть текста заменена на многоточие, например:

VOLUMEUSERQUOTA — Управление квотами для индивидуальных томов хран.

Содержимое полной справки, получаемой по команде wmic /?:full :

Класс (Class) – Класс – это определение объекта WMI. Например, класс процесс (process) определяет все характеристики любого процесса, но не ссылается на какой-либо конкретный процесс.

Объект (Object) – Иногда называется экземпляром класса (instance); Это конкретный набор данных WMI, определенное проявление класса.

Действие (Action) – Также называется методом (method). Действие – это доступная для выполнения функция класса или объекта WMI, некоторая операция, которую мы можете заставить выполнить класс или объект. Например, завершение процесса объектом Process с использованием метода delete, как это рассматривается ниже.

Свойства — параметры объекта.

Путь объекта — путь WMI для использования при обращении к экземпляру или классу.

Псевдоним — определение классов WMI, применяемое в WMIC. Псевдонимы упрощают обращение к классам и свойствам. Они также предоставляют действия, облегчающие работу с классами. Псевдонимы могут включать средства для работы с классами на удаленном компьютере, а также на нескольких компьютерах.

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

Утилита WMIC предоставляет три основных параметра для управления отображением данных:

/OUTPUT – вывод во внешний файл.

/FORMAT – позволяет форматировать информацию.

/TRANSLATE – настройка вывода специальных символов.

Кроме вывода в файл, возможен вывод в буфер обмена, если задан параметр /OUTPUT:CLIPBOARD . В качестве дополнительного средства протоколирования вместо параметра /OUTPUT можно использовать параметр /RECORD: . Для отмены протоколирования в интерактивном режиме используется параметр /RECORD:””

Форматы выводимых данных:

CSV – вывод данных в одну строку, с разделителем в виде запятой.

HFORM – информация отображается в виде списка, оформленного в HTML-формате. Отображается две колонки — название объекта и его значение.

HTABLE – формат вывода данных в виде HTML таблицы.

LIST – вывод свойства и его значения происходит в отдельной строке.

MOF – собственно, информация преобразуется в формат MOF.

RAWXML – вывод данных в XML файл.

TABLE – табличный формат вывода данных.

VALUE – аналогично значению LIST.

XML – вывода данных в XML файл, но с дополнительной информацией.

Параметр /TRANSLATE используется совместно с оператором GET в тех случаях, когда есть необходимость вывода символов, стандартно используемых для форматирования текста или разделения полей. В среде WMIC поддерживаются таблицы BasicXml и NoComma

Необходимо учитывать тот факт, что формат вывода данных и их вид будет зависеть от порядка следования параметров /TRANSLATE и /FORMAT:

— Если /TRANSLATE следует раньше чем /FORMAT, то сначала выполняется преобразование, а затем форматирование выводимых данных.

Читайте также:  Windows 10 ram hardware reserved

— Если /FORMAT идет раньше /TRANSLATE, то сначала выполняется форматирование, а затем – преобразование.

Примеры использования WMIC для работы с процессами.

Список псевдонимов, доступный на локальном компьютере можно получить с помощью команды:

wmic alias list brief

Для класса Win32_Process предусмотрен псевдоним Process . Соответственно, для получения подсказки можно воспользоваться командой:

Отображаемая справка для Windows 10:

Для получения списка процессов используется параметр LIST . Для получения подсказки по форматам и параметрам LIST можно использовать команду:

wmic process list /?

Для получения списка процессов, отображаемого в кратком формате, используется команда:

wmic process list brief

Пример выводимой информации:

Для вывода сведений о процессах в html-файл:

wmic /output:c:\proclist.htm process list /format:htable

Параметр /output задает имя файла с результатами, а параметр /format — формат выводимых данных.

wmic /output:proclist1.htm process list /format:hform — вывод результатов в HTML-файл в виде списка процессов с двумя колонками из названия свойства и его значения.

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

wmic /user:»Admin» /password:»admpass» /node:»Comp0″ process list brief

В команде указываются имя пользователя и пароль для подключения к удаленной системе указанной параметром /node: . Если имя пользователя и пароль не заданы, то используется учетная запись текущего пользователя. Вместо имени компьютера можно задавать его IP-адрес:

wmic /node:”192.168.1.132” process list brief

Если имена компьютеров содержат специальные символы, то они должны заключаться в двойные кавычки:

wmic /node:”server-01” process list brief

Возможно указание списка имен или IP-адресов удаленных компьютеров:

wmic /node:”server-01”,”192.168.0.1” process list brief

Параметр /node может включать либо список компьютеров, либо имя текстового файла со списком. Файл должен содержать имена компьютеров, разделенные запятой, или набор строк с именами по одному в строке. При использовании списка удаленных компьютеров из файла, перед его именем в параметре /node должен присутствовать символ @ :

wmic /node:”@C:\comps.txt” process list brief

При обработке списка компьютеров, взятого из текстового файла, какие-либо из перечисленных компьютеров могут быть выключены, поэтому, для сокращения времени выполнения команды, желательно использовать параметр /FAIFAST:ON , который позволит исключить применение команды по отношению к узлам, не отвечающим на эхо-запрос (не отвечающим на ping):

wmic /failfast:on /node:”@C:\comps.txt” process list status

Для опроса состояния конкретного процесса, например браузера Chrome можно использовать команду:

wmic process where name=”chrome.exe” list status

Для принудительного завершения процесса используется команда:

wmic process where name=”chrome.exe” delete

wmic process where name=”chrome.exe” call terminate

Для запуска программы на локальном компьютере:

wmic process call create «C:\Program Files (x86)\Google\Chrome\Application\chrome.exe» Для запуска программ на удаленных компьютерах используется параметр /node , рассмотренный выше и полные пути исполняемых файлов относительно удаленной системы.

Примеры использования WMIC для получения сведений о компонентах системы.

WMIC OS LIST BRIEF — отобразить краткие сведения о системе.

wmic OS GET Name — отобразить версию ОС Windows и устройство загрузки.

WMIC OS GET csname,bootdevice,localdatetime — отобразить имя компьютера, устройство загрузки, локальные дату и время.

WMIC OS GET locale, oslanguage, codeset — отобразить данные локализации Windows

WMIC OS GET osarchitecture /value — отобразить архитектуру системы (разрядность Windows, например — значение OSArchitecture=64-bit для 64-разрядной системы)

WMIC QFE list brief — отобразить список обновлений Quick Fix Engineering (QFE) Windows.

wmic qfe list brief | find “311” — отобразить список обновлений Windows, в названии которых присутствует 311 .

WMIC QFE get hotfixid,description,installedOn — отобразить список обновлений Windows, включающий название, краткое описание и дату установки.

WMIC DISKDRIVE get name,size,model — отобразить список физических дисков, содержащих название модели, имя в системе и размер.

WMIC PARTITION list brief — отобразить список всех разделов на всех дисках.

WMIC LOGICALDISK list brief — отобразить список логических дисков.

WMIC LOGICALDISK where drivetype=4 get FreeSpace,ProviderName — отобразить свободное место и путь для сетевых дисков (drivetype=4)

WMIC LOGICALDISK where drivetype!=4 get freespace, description — отобразить свободное место и описание для локальных дисков, включая CD/DVD и съемные устройства хранения данных.

WMIC LOGICALDISK where description=’Local Fixed Disk’ get deviceid, volumename — отобразить идентификаторы (буквы дисков) и метки томов для всех локальных логических дисков.

WMIC SERVICE list brief | more — отобразить список системных служб в постраничном режиме.

WMIC SERVICE where state=”running” GET caption,name,state /format:list — отобразить список, включающий отображаемые имена, короткие имена и статус работающих системных служб.

WMIC SERVICE where state=”Stopped” GET caption,name,state /format:list — отобразить список, включающий отображаемые имена, короткие имена и статус остановленных системных служб.

WMIC SERVICE where name=’WinRM’ CALL STARTSERVICE — запустить службу удаленного управления Windows (WinRM)

WMIC SERVICE where name=’WinRM’ GET name,state — проверить состояние службы WinRM.

WMIC PRINTER LIST STATUS — отобразить список принтеров и их состояние.

WMIC BASEBOARD list brief — отобразить общую информацию о материнской плате компьютера.

wmic bios get Manufacturer — отобразить сведения о производителе BIOS.

wmic bios get smbiosbiosversion — отобразить версию BIOS.

wmic bios get Description — отобразить описание производителя BIOS.

WMIC MEMORYCHIP list brief — отобразить сведения о модулях памяти компьютера.

WMIC MEMORYCHIP GET Devicelocator,Capacity — отобразить сведения о размещении и емкости модулей памяти DIMM.

Пример командного файла, который отображает основные сведения об оборудовании и операционной системе компьютера:

ECHO +++ %date +++ %TIME% +++

ECHO Имя компьютера:

wmic os get csname

ECHO Материнская плата:

wmic baseboard get Product

wmic bios get manufacturer,Description

wmic CPU get name

ECHO Модули памяти:

WMIC MEMORYCHIP GET Devicelocator,Capacity

WMIC DISKDRIVE get name,size,model

wmic os get Caption,BuildNumber

ECHO Логические диски:

WMIC LOGICALDISK get caption,Freespace,Size

ECHO Установленные программы в алфавитном порядке:

Администрирование с помощью WMI

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

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

Читайте также:  Что будет с windows если удалить корзину

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 на локальном компьютере.

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

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

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

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

Для обращения к объектам 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:», необязательных настроек безопасности, необязательного пути к требуемому классу:

Читайте также:  Почему не видит флешку при установке windows

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

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

Существует два способа обращения к WMI через Visual Basic.NET.

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

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

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

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

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

В качестве примера прораммы использования WMI в Visual Basic.Net представлено консольное приложение управления сервисом печати компьютера. Приложение запрашивает модель компьютера и выводит результат в консоль. После чего запрашивает состояние сервиса печати и, если он остановлен, предлагает запустить его.

Приложение разделено на две части: класс, который компилируется в динамическую библиотеку 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 по этой ссылке.

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

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

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

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

Оцените статью