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

Форматы вывода данных WMIC. Типичные команды для администрирования

< Лекция 14 || Лекция 15: 123 || Лекция 16 >
Аннотация: Обсуждаются форматы вывода для команд WMIC. Даются примеры команд WMIC, которые могут оказаться полезными для администратора операционной системы
Ключевые слова: XSL, CIM

Форматы вывода данных WMIC. Типичные команды для администрирования

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

Стандартные форматы вывода

По умолчанию WMIC поддерживает несколько форматов вывода.

Вывод в буфер Windows

Иногда бывает удобно перенаправить вывод команд WMIC в буфер Windows, например, для последующей вставки результатов выполнения команды в документ Microsoft Word. Для этого нужно в командной строке WMIC глобальному параметру /OUTPUT присвоить значение CLIPBOARD:

/OUTPUT:CLIPBOARD

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

Вывод в XML-файл

Сохранять в XML-файле информацию о запускаемых командах WMIC и выводимых ими результатах можно двумя способами: с помощью глобального параметра /RECORD или с помощью формата вывода RAWXML.

Если в XML-файле не нужно будет производить детальный разбор выводимых командами данных, то проще задать выходной файл с помощью параметра /RECORD, например:

/RECORD:C:\out_wmic.xml

После этого каждой вводимой команде WMIC в этом файле будет соответствовать элемент <RECORD>, внутри которого будут записаны элементы <REQUEST> с информацией о команде и <OUTPUT> с результатом выполнения команды в блоке <![CDATA[.

Для того чтобы отменить такой вывод в XML-файл, нужно либо закрыть сеанс WMIC, либо присвоить параметру /RECORD пустое значение: /RECORD:""

Если же требуется полностью структурировать выводимую командами LIST или GET информацию, то можно воспользоваться форматом вывода RAWXML и перенаправить вывод во внешний файл с помощью параметра /OUTPUT, например:

/OUTPUT:C:\out_xml.xml CPU LIST BRIEF /FORMAT:RAWXML

Корневым элементом в файле out_xml.xml будет элемент <COMMAND>, в атрибутах которого записан порядковый номер выполняемой команды в сеансе WMIC ( SEQUENCENUM ), имя компьютера, на котором была запущена команда ( ISSUEDFROM ), время начала выполнения команды ( STARTTIME ) и количество повторов команды ( EVERYCOUNT ).

Элемент <REQUEST> является контейнером, внутри которого находятся элементы, содержащие информацию о запущенной команде и значениях параметров WMIC, которые были установлены во время запуска команды.

Элемент <COMMANDLINE> содержит полный текст запускаемой программы:

<COMMANDLINE> /OUTPUT:C:\out_xml.xml CPU LIST BRIEF /
  FORMAT:RAWXML </COMMANDLINE>

В контейнере <COMMANDLINECOMPONENTS> находятся элементы, полученные в результате разбора командной строки. Элемент <NODELIST> содержит список компьютеров (элементы <NODE> ), на которых запускалась команда.

В элементе <FRIENDLYNAME> хранится имя используемого псевдонима WMIC, в <TARGET> — текст WQL-запроса, который соответствует псевдониму, в <ALIASTARGET> — название класса WMI, к которому происходит обращение:

<FRIENDLYNAME>CPU</FRIENDLYNAME> 
<TARGET>Select * from WIN32_PROCESSOR</TARGET> 
<ALIASTARGET>WIN32_PROCESSOR</ALIASTARGET>

Элемент <NAMESPACE> содержит путь к используемому пространству имен CIM, в элементе <RESULTANTQUERY> записан текст WQL-запроса, который был выполнен при запуске команды (в нашем примере этот запрос построен с учетом модификатора BRIEF ):

<NAMESPACE>ROOT\CIMV2</NAMESPACE> 
<RESULTANTQUERY> SELECT Caption, DeviceID, Manufacturer, 
  MaxClockSpeed, Name, SocketDesignation FROM WIN32_PROCESSOR 
    </RESULTANTQUERY>

В элементе <FORMATS> приведен список XSL-файлов, которые используются для форматирования результатов выполнения команды.

В элементе <PROPERTIES> находятся описания всех свойств класса WMI, которые фигурируют в выполняемом запросе. Каждому такому свойству соответствует элемент <PROPERTY>.

Значения всех глобальных параметров WMIC, каждому из которых соответствует свой XML-элемент, собраны внутри контейнера <CONTEXT>.

Результаты выполнения запущенной команды находятся внутри элемента <CIM> в контейнере <RESULTS>.

Внутри контейнера <CIM> находятся элементы <INSTANCE>, соответствующие экземплярам класса WMI, выбранным в результате выполнения WQL-запроса. Каждый элемент <INSTANCE> содержит элементы <PROPERTY>, соответствующие свойствам экземпляра класса WMI (имя свойства записано в атрибуте NAME, тип свойства — в атрибуте TYPE ). Внутри элемента <PROPERTY> находится элемент <VALUE>, значение которого совпадает со значением соответствующего свойства экземпляра класса WMI.

Вывод в HTML-файл

С помощью стандартных форматов вывода HFORM и HTABLE можно, используя параметр /OUTPUT, сформировать HTML-файлы двух видов с результатами выполнения операторов LIST и GET.

Формат вывода HFORM позволяет представить выходную информацию в виде совокупности HTML-таблиц для каждого из экземпляров класса, выбранного в результате выполнения команды. При этом в первом столбце этих таблиц записывается имя свойства, а во втором — значение этого свойства. Например, выполним команду

/OUTPUT:C:\hf.htm PROCESS LIST BRIEF /FORMAT:HFORM

и откроем полученный файл hf.htm с помощью браузера Internet Explorer (рис. 15.1).

Пример выходного HTML-файла, полученного с помощью формата HFORM

Рис. 15.1. Пример выходного HTML-файла, полученного с помощью формата HFORM

С помощью формата HTABLE можно поместить всю выводимую информацию в одну HTML-таблицу, в которой каждая строка соответствует одному экземпляру класса. В заголовках столбцов этой таблицы записываются названия выводимых свойств, а в самих столбцах — значения этих свойств. Например, на рис. 15.2 показан открытый в браузере Internet Explorer файл ht.htm, который был сформирован в результате выполнения следующей команды:

/OUTPUT:C:\ht.htm PROCESS LIST BRIEF /FORMAT:HTABLE
Пример выходного HTML-файла, полученного с помощью формата HTABLE

увеличить изображение
Рис. 15.2. Пример выходного HTML-файла, полученного с помощью формата HTABLE

Кроме этого, таблица, получаемая с помощью формата HTABLE, может быть отсортирована по любому столбцу с помощью параметра sortby (название параметра обязательно должно быть набрано маленькими буквами), в качестве значения которого должно быть указано имя нужного столбца (свойства). Например, для получения таблицы процессов, отсортированной по полю Name, нужно выполнить следующую команду:

/OUTPUT:C:\ht.htm PROCESS LIST BRIEF /FORMAT:HTABLE:"sortby=Name"
< Лекция 14 || Лекция 15: 123 || Лекция 16 >
Валентина Тюрина
Валентина Тюрина

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

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

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

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

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

Михаил Байков
Михаил Байков
Россия, Москва, Московский Авиационный Институт, 2009
Алексей Хохлов
Алексей Хохлов
Россия, Балашиха