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

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

< Лекция 13 || Лекция 14: 1234 || Лекция 15 >
Оператор CREATE

Оператор CREATE позволяет создать новый экземпляр класса WMI и задать значения свойств этого экземпляра (новый класс с помощью CREATE создать нельзя). Класс WMI, экземпляр которого должен быть создан, задается с помощью псевдонима WMIC или команды CLASS ; после оператора CREATE указываются пары свойство–значение, которые разделяются запятыми (в качестве разделителя свойства и значения в паре используется знак равенства).

В качестве примера рассмотрим, каким образом оператор CREATE используется для создания новых переменных среды. Всем переменным среды, определенным в системе, соответствуют экземпляры класса Win32_Environment. В свою очередь, этому классу соответствует псевдоним ENVIRONMENT.

Для того чтобы узнать, какие свойства должны быть определены при создании нового экземпляра с помощью псевдонима ENVIRONMENT, нужно вызвать встроенную справку по оператору CREATE для данного псевдонима (команда ENVIRONMENT CREATE /?). В нашем случае нам потребуется задать имя переменной (параметр Name), ее значение (параметр VariableValue ) и имя пользователя (параметр UserName ), которому будет доступна эта переменная. Например, для создания переменной War1 со значением War1905 для пользователя Popov из домена Domain1, нужно выполнить следующую команду:

ENVIRONMENT CREATE Name="War1", VARIABLEVALUE="War1905",  
  UserName="Domain1\Popov"

Если же необходимо создать системную переменную, которая будет доступна всем пользователям, то необходимо в качестве значения параметра UserName указывать <SYSTEM>, например:

ENVIRONMENT CREATE Name="War2", VARIABLEVALUE="War1905",  
  UserName="<SYSTEM>"
Оператор SET

С помощью оператора SET можно изменить значения свойств у одного или нескольких экземпляров класса WMI, которые могут быть заданы с помощью псевдонима WMIC или команды CLASS. Напомним, что изменять значения можно далеко не у всех свойств. Чтобы узнать, какие свойства доступны для изменения у определенного псевдонима, нужно для этого псевдонима вывести встроенную справку по оператору SET. Например, выполнив команду ENVIRONMENT SET /?, можно увидеть, что у псевдонима ENVIRONMENT для изменения доступны только свойства Name и VariableValue.

Для того чтобы с помощью оператора SET изменить значения свойств, нужно, как и в операторе CREATE, указать разделенные запятыми пары вида Cвойство="Значение". Например, чтобы изменить имя системной переменной War2 на War3, а ее значение на War, следует выполнить следующую команду:

ENVIRONMENT WHERE Name="War2" SET Name="War3", VariableValue="War"
Оператор DELETE

Оператор DELETE производит удаление текущего экземпляра класса WMI или целого набора таких экземпляров (также DELETE может использоваться для удаления класса WMI). Например, для удаления созданной нами переменной среды War1 нужно выполнить следующую команду:

ENVIRONMENT WHERE Name="War1" DELETE

Если при этом с помощью глобального параметра /INTERACTIVE был включен интерактивный режим выполнения команд ( /INTERACTIVE:ON ), то перед удалением переменной будет задан дополнительный вопрос. Кроме этого, вне зависимости от значения глобального параметра /INTERACTIVE, дополнительный вопрос об удалении может быть выведен с помощью параметра /INTERACTIVE самого оператора DELETE:

ENVIRONMENT WHERE Name="War2" DELETE /INTERACTIVE

Параметр /NOINTERACTIVE, напротив, позволяет выполнить удаление без дополнительного подтверждения:

ENVIRONMENT WHERE Name="War2" DELETE /NOINTERACTIVE
Оператор GET

Оператор GET позволяет получить значения определенных свойств экземпляров классов WMI, которые могут задаваться с помощью псевдонимов WMIC или команды PATH.

Если же, используя команду CLASS, применить оператор GET к классу WMI, то мы получим описание этого класса. Например, после выполнения команды /OUTPUT:C:\1.htm CLASS Win32_Process GET в файле 1.htm сформируется описание класса Win32_Process.

Для того чтобы вывести на экран несколько свойств экземпляров класса, нужно указать имена этих свойств, разделенные запятыми, после оператора GET. Например: PROCESS GET Name, Handle.

Если ввести оператор GET без указания списка свойств, то будут выведены все свойства псевдонима.

Как уже отмечалось выше, одной из особенностей архитектуры WMIC является то, что XML-формат выходных данных может быть довольно легко изменен с помощью соответствующих таблиц стилей XSL. В операторе GET для этой цели служит параметр /FORMAT, в качестве значения которого указывается либо стандартное или определенное пользователем ключевое слово, задающее формат выходной информации, либо имя XSL-файла, с помощью которого будет происходить обработка выходных XML-данных. Стандартным ключевым словам (значениям параметра /FORMAT ) соответствуют XSL-файлы, которые расположены в каталоге %SystemRoot%\System32\Wbem; данное соответствие устанавливается в файле xsl-mapping.xml, который находится в том же каталоге (листинг 14.1).

<XSLMAPPINGS>
<XSLFORMAT KEYWORD="TABLE">WmiCliTableFormat.xsl</XSLFORMAT>
<XSLFORMAT KEYWORD="VALUE">WmiCliValueFormat.xsl</XSLFORMAT>
<XSLFORMAT KEYWORD="MOF">WmiCliMofFormat.xsl</XSLFORMAT>
<XSLFORMAT KEYWORD="LIST">WmiCliValueFormat.xsl</XSLFORMAT>
<XSLFORMAT KEYWORD="TVLIST">TextValueList.xsl</XSLFORMAT>
</XSLMAPPINGS>
Листинг 14.1. Стандартный файл xsl-mapping.xml

В файл xsl-mapping.xml можно добавлять собственные ключевые слова, связывая их со своими XSL-файлами. Стандартные форматы вывода оператора GET описаны в табл. 14.3.

Таблица 14.3. Стандартные форматы вывода оператора GET
Значение параметра /FORMAT Описание
CSV Значения свойств экземпляра класса выводятся в одну строку и отделяются друг от друга запятыми
HFORM Информация выводится в виде совокупности HTML-таблиц для каждого из экземпляров класса. В первом столбце этих таблиц записывается имя свойства, а во втором — значение этого свойства
HTABLE Информация выводится в виде одной HTML-таблицы, в которой каждая строка соответствует одному экземпляру класса. В заголовках столбцов этой таблицы записываются названия выводимых свойств, а в самих столбцах — значения этих свойств
LIST Формат вывода аналогичен случаю GET /VALUE — каждое свойство и его значение выводятся в отдельной строке
MOF Выходные данные преобразуются в MOF-формат
RAWXML Формируются XML-элементы, содержащие подробную информацию о выполняемой команде и результатах ее обработки
TABLE Формат вывода аналогичен случаю GET /ALL — данные выводятся в табличном виде
VALUE То же самое, что LIST
XML Выходные данные с дополнительной информацией о выполняемой команде преобразуются в XML-формат
Оператор LIST

Оператор LIST, как и GET, позволяет вывести значения свойств экземпляров классов WMI, которые могут задаваться с помощью псевдонимов WMIC или команды PATH. Этот оператор выполняется для псевдонимов по умолчанию, т. е. если в командной строке WMIC вводится один псевдоним без оператора, то к этому псевдониму применяется оператор LIST.

В отличие от оператора GET, с помощью LIST нельзя вывести данные для произвольных свойств экземпляров класса WMI. В операторе LIST можно лишь выбрать один из имеющихся наборов свойств, которые задаются модификаторами. Общий синтаксис оператора LIST таков:

LIST [<модификатор>] [<параметры>]

Отметим, что наборы модификаторов для различных псевдонимов могут отличаться друг от друга. Однако есть несколько стандартных модификаторов, которые имеются почти у всех псевдонимов (табл. 14.4).

Таблица 14.4. Стандартные модификаторы оператора LIST
Модификатор Описание
BRIEF Выводятся основные свойства псевдонима
FULL Выводятся все свойства псевдонима (используется по умолчанию)
INSTANCE На экран будут выводиться только пути экземпляров класса (значение свойства __PATH )
STATUS Отображается состояние объектов
SYSTEM Выводятся системные свойства псевдонима

Для того чтобы узнать, какие именно модификаторы доступны для определенного псевдонима, и какие свойства входят в эти модификаторы, нужно воспользоваться встроенной справкой для оператора LIST, например: PROCESS LIST /?

После модификатора в операторе LIST могут указываться параметры /FORMAT и /TRANSLATE, которые имеют тот же смысл, что и в рассмотренном ранее операторе GET.

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

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

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

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

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

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

Дмитрий Матвеев
Дмитрий Матвеев
Россия, Москва, 1100, 2009