Операторы (действия) WMIC
В этом разделе будут описаны некоторые стандартные операторы (действия) CALL, CREATE, SET, DELETE, GET и LIST, которые поддерживаются большинством псевдонимов WMIC. Псевдонимы могут также поддерживать другие действия. Чтобы получить сведения об операторах, доступных для некоторого псевдонима, нужно вывести встроенную справку для этого псевдонима, т. е. выполнить команду вида <псевдоним> /?.
Оператор CALL
С помощью оператора CALL можно выполнить метод класса или экземпляра класса WMI (путь к этому классу или экземпляру может быть задан либо с помощью псевдонима WMIC, либо с помощью команд CLASS и PATH ).
Для того чтобы узнать, какие методы доступны в псевдониме, а также какие параметры должны указываться при вызове определенного метода, нужно воспользоваться встроенной справкой WMIC.
Рассмотрим этот процесс более подробно. Предположим, что нам нужно запустить из среды WMIC стандартный калькулятор Windows (calc.exe). Так как для этого необходимо создать новый процесс, то сначала мы посмотрим, какие методы можно вызвать с помощью псевдонима PROCESS (или с помощью класса Win32_Process ). Для этого в командной строке WMIC введем одно из следующих выражений:
PROCESS CALL /?
CLASS Win32_Process CALL /?
В результате на экран выведется список доступных методов с описанием входных (IN) и выходных (OUT) параметров для каждого метода:
wmic:root\cli>PROCESS CALL /?
Вызов методов.
Использование:
CALL <имя метода> [<список фактических параметров>]
ЗАМЕЧАНИЕ. <список фактических параметров> ::= <факт. парам.> |
<факт. парам.>,. . .
Для псевдонима доступны следующие команды и методы:
Вызов [ Ввод/Вывод ]Параметры и тип Состояние
==== ===================== ======
AttachDebugger (null)
Create [UNKNOWN]CommandLine(STRING) (null)
[UNKNOWN]CurrentDirectory(STRING)
[UNKNOWN]ProcessStartupInformation(OBJECT)
[UNKNOWN]ProcessId(UINT32)
GetOwner [UNKNOWN]Domain(STRING) (null)
[UNKNOWN]User(STRING)
GetOwnerSid [UNKNOWN]Sid(STRING) (null)
SetPriority [IN ]Priority(SINT32) (null)
Terminate [UNKNOWN]Reason(UINT32) (null)
Напомним, что для запуска метода необходимо, чтобы этот метод был реализован в провайдере соответствующего класса WMI. Индикатором такой реализации служит состояние метода Implemented.
При необходимости для каждого метода можно вывести его краткое описание. Для этого нужно использовать полный формат помощи: PROCESS CALL /?:FULL
Итак, мы видим, что новый процесс создается с помощью метода Create. Обязательным параметром CommandLine при этом является командная строка, содержащая путь к запускаемому исполняемому файлу (если в методе необходимо указывать несколько параметров, то эти параметры разделяются запятыми.). В нашем случае необходимо выполнить следующую команду:
PROCESS CALL Create calc.exe
В результате запустится калькулятор Windows и на экран выведутся выходные параметры метода Create (идентификатор ProcessIDнового процесса и код возврата ReturnValue, нулевое значение которого говорит об успешном выполнении метода).
Для того чтобы закрыть запущенный калькулятор, нужно вызвать метод Terminate:
PROCESS WHERE Name="calc.exe" CALL Terminate
Оператор 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.
Дата добавления: 2018-03-01; просмотров: 1669;