Опубликован: 12.01.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Мордовский государственный университет имени Н.П. Огарева
Лекция 14:

Доступ к WMI из командной строки. Командная оболочка WMIC

< Лекция 13 || Лекция 14: 1234 || Лекция 15 >

Архитектура WMIC

Главными составными частями WMIC являются псевдонимы (aliases), средство синтаксического анализа и разбора вводимых команд (parser) и средства трансформации выходной информации в нужный формат.

Псевдонимы (aliases) в WMIC — это определения классов WMI, которые упрощают обращение к этим классам и их свойствам. Например, классу Win32_Process соответствует псевдоним PROCESS, а классу Win32_OperatingSystem — псевдоним OS. Таким образом, можно сказать, что псевдонимы выступают в качестве дружественных посредников между объектной моделью WMI и администратором операционной системы.

Стандартные псевдонимы определены для большинства часто используемых классов WMI, в случае необходимости можно создавать собственные псевдонимы или изменять существующие. Хранятся псевдонимы в виде экземпляров класса MSFT_CliAlias из пространства имен Root\Cli.

Пространство имен Root\Cli называется ролью (role) , в нем находятся и другие классы, связанные с WMIC ( MSFT_CliVerb, MSFT_CliFormat, MSFT_CliParam, MSFT_CliProperty, MSFT_CliConnection, MSFT_CliTranslateTable и т. д.). Вообще говоря, WMIC позволяет определить несколько ролей и производить переключение между ними, т. е. в CIM может быть помещено несколько независимых пространств имен, содержащих описания псевдонимов WMIC.

Над псевдонимами можно производить различные операции, которые определяются операторами, вводимыми в командной строке WMIC после имени псевдонима. Обработчик (парсер) для синтаксического разбора, интерпретации и выполнения операций с псевдонимами представлен исполняемым файлом wmic.exe, который находится в каталоге %SystemRoot%\System32\Wbem.

На рис. 14.1 представлена общая схема работы WMIC.

Схема работы WMIC

Рис. 14.1. Схема работы WMIC

Итак, WMIC функционирует следующим образом. Обработчик wmic.exe получает введенную команду через стандартный входной поток Stdin. Парсер выполняет синтаксический разбор команды, выделяет псевдоним (если таковой имеется) и извлекает определение этого псевдонима для активной роли (напомним, что роли по умолчанию соответствует пространство имен Root\Cli). Кроме псевдонима в командной строке WMIC могут стоять операторы, задающие действие, которое нужно выполнить над псевдонимом. Обработка команды WMIC сводится, в конечном итоге, к выполнению последовательности вызовов соответствующих API-функций WMI в пространстве имен на локальном или удаленном компьютере.

Данные, которые возвращаются WMI в результате выполнения этих API-функций, автоматически преобразуются в формат XML. После этого данные форматируются тем или иным способом в соответствии с таблицей стилей XSL (eXtensible Stylesheet Language), которая связана с псевдонимом по умолчанию или явно задана с помощью соответствующих параметров оператора. Отформатированная информация возвращается пользователю через стандартный выходной поток Stdout.

Структура командной строки WMIC

В данном разделе подробно описаны все элементы командной строки WMIC и приведены примеры команд, которые могут быть полезны администраторам Windows в их повседневной деятельности.

Синтаксис командного языка WMIC

Команды, выполняемые в интерактивном режиме работы WMIC, должны иметь определенную структуру. В командной строке могут присутствовать глобальные параметры, псевдонимы, операторы (verbs) и команды, причем все эти компоненты должны записываться в строго заданном порядке.

Вообще говоря, синтаксис командного языка WMIC может быть представлен в нормальной форме Бэкуса-Наура (Backus-Naur Form, BNF), которая была разработана для описания языка Алгол-60 и затем использовалась для многих других языков программирования. При записи грамматики в форме Бэкуса-Наура используются несколько типов объектов.

  • Основные (терминальные) символы. К ним относят, в частности, ключевые слова.
  • Металингвистические переменные (нетерминальные символы). Их значениями являются цепочки основных символов описываемого языка. Металингвистические переменные изображаются словами, заключенными в угловые скобки ("<", ">").
  • Металингвистические связки изображаются специальными символами ( "::=", "|" ) и используются для определения и связи друг с другом металингвистических переменных.

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

<целое> ::= <целое без знака> | +<целое без знака> | -<целое без знака>
<целое без знака> ::= <цифра> | <целое без знака> <цифра>
<цифра> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

На практике чаще всего командная строка WMIC строится следующим образом:

[<глобальные параметры>] <псевдоним> 
  [WHERE <оператор WHERE>] [<оператор действия>]

Приведем несколько простых примеров.

Запустим WMIC и введем следующую команду:

SERVICE LIST

Здесь SERVICE является псевдонимом, а LIST — оператором действия, применяемым к этому псевдониму. В результате мы получим список всех служб, зарегистрированных на локальной машине:

wmic:root\cli>SERVICE LIST
AcceptPause  AcceptStop  Caption
ystemName  TagId  WaitHint
FALSE        FALSE       Оповещатель
FALSE        TRUE        Служба шлюза уровня приложения
FALSE        FALSE       Управление приложениями
FALSE        FALSE       ASP.NET State Service
. . .

Для того чтобы вывести сведения о конкретной службе (например, о службе оповещения), нужно использовать ключевое слово WHERE, например:

wmic:root\cli>SERVICE WHERE Name="Alerter" LIST
AcceptPause  AcceptStop  Caption  CheckPoint  CreationClassName . . .
FALSE  FALSE  Оповещатель  0  Win32_Service      Посылает . . .

Если необходимо получить информацию о службе оповещения на удаленном компьютере \\Server1, применяется глобальный параметр /NODE:

/NODE:"Server1" SERVICE WHERE Name="Alerter" LIST

Рассмотрим теперь более подробно каждый из компонентов командной строки WMIC.

Команды WMIC

WMIC поддерживает пять стандартных команд: CONTEXT, CLASS, PATH, QUIT и EXIT.

Команда CONTEXT

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

Команда CLASS

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

Таким образом, команда CLASS позволяет извлечь определение какого-либо класса WMI или создать его новые экземпляры. Например, для того чтобы увидеть все свойства и методы класса Win32_Process, можно выполнить следующую команду (результат будет выведен на экран в формате HTML):

CLASS Win32_Process
Команда PATH

Команда PATH применяется для прямого доступа к одному или нескольким экземплярам классов WMI, без указания псевдонимов WMIC. Команда PATH особенно полезна, если для нужного класса WMI не существует псевдонима WMIC.

Например, рассмотрим команду, в которой используется псевдоним PROCESS для вывода на экран некоторых сведений о запущенном Проводнике Windows:

PROCESS WHERE (Name="explorer.exe") GET Caption, 
  CommandLine, Handle

Так как псевдоним PROCESS соответствует классу Win32_Process, то эта команда равносильна следующей:

PATH Win32_Process WHERE (Name="explorer.exe") 
  GET Caption, CommandLine, Handle

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

PATH Win32_Process.Name="explorer.exe" GET Caption, 
  CommandLine, Handle
Команды QUIT и EXIT

Команды QUIT и EXIT позволяют выйти из WMIC и вернуться в предыдущую оболочку (например, к командному приглашению Windows XP).

Глобальные параметры (ключи), настройки WMIC

В среде WMIC определены несколько глобальных параметров (ключей), которые по умолчанию применяются для всех вводимых в командной строке WMIC выражений. Как уже отмечалось ранее, для просмотра глобальных параметров используется команда CONTEXT. Для изменения значений этих параметров используется следующий синтаксис:

/Параметр:Значение

Далее описаны некоторые глобальные параметры WMIC.

Параметр /NODE

В параметр /NODE записываются разделяемые запятыми имена компьютеров, к которым будет обращаться WMIC при поиске классов WMI, соответсвующих вводимым в командной строке псевдонимам. Например:

/NODE:SERVER1,SERVER2

По умолчанию значением параметра /NODE является имя локального компьютера.

Имена компьютеров для параметра /NODE можно также брать из предварительно подготовленного текстового файла. В этом файле имена машин должны быть разделены либо запятыми, либо символами возврата каретки. Например, пусть на диске C имеется текстовый файл nodes.txt следующего содержания:

Server1,Server2
Server3

Тогда после выполнения команды

/NODE:@c:\nodes.txt

значением параметра /NODE станет список из трех имен компьютеров.

Параметр /PRIVILEGES

Напомним, что для выполнения средствами WMI операций, для которых необходимы специальные привилегии в операционных системах Windows NT/2000/XP (например, перезагрузка компьютера), необходимо установить режим использования всех привилегий при работе с WMI. Глобальный параметр /PRIVILEGES отвечает за этот режим при использовании WMIC.

По умолчанию в целях безопасности запрещено использовать все привилегии, значением параметра /PRIVILEGES при этом является DISABLE. Для того чтобы разрешить использовать все привилегии, нужно параметру /PRIVILEGES присвоить значение ENABLE:

/PRIVILEGES:ENABLE
< Лекция 13 || Лекция 14: 1234 || Лекция 15 >
Валентина Тюрина
Валентина Тюрина

Вопрос по лекции 7, где рассматривается взаимодействие со сторонними программами, в том числе эмуляция нажатия кнопок клавиатуры WshShell.SendKeys.

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

Можно вытащить информацию о объекте (кнопке) скажем с помощью AutoIt Info, или ориентироваться скажем на текст на кнопке..., но как на эту кнопку нажать? (без обхода по клавиатуре)

Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.