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

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

< Лекция 13 || Лекция 14: 1234 || Лекция 15 >
Аннотация: Описывается командная оболочка WMI Command-line (WMIC), разработанная для работы с WMI из командной строки. Рассматривается архитектура WMIC и структура внутрених команд

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

В Windows XP и Windows Server 2003 к подсистеме WMI можно обращаться непосредственно из командной строки без помощи графических утилит и составления сложных сценариев. Для этого используется программа WMIC (WMI Command-line), которая поддерживает навигацию по информационной схеме WMI локального или удаленного компьютера, позволяя выполнять WQL-запросы к классам и объектам WMI. При этом вместо сложных названий классов WMI используются простые псевдонимы, причем можно создавать собственные псевдонимы, что делает информационную схему WMIC расширяемой.

По умолчанию WMIC поддерживает около 80 псевдонимов, с помощью которых можно выполнить 150 методов и получить значения множества свойств. Важной особенностью WMIC является то, что вывод команд может быть организован в различные форматы: на экран, в текстовый файл, в XML- и HTML-документы, в MOF-файл, в текстовый файл с разделителями или в любой другой формат, определяемый пользователем с помощью таблиц стилей XSL (eXtensible Stylesheet Language).

Одна команда WMIC может быть применена сразу к нескольким удаленным компьютерам с любой 32-разрядной версией Windows, при этом наличие WMIC на удаленной машине не требуется, необходима только установка ядра WMI и соответствующая настройка прав доступа к WMI. Кроме этого, команды WMI могут использоваться в пакетных файлах Windows, что позволяет простыми средствами автоматизировать работу с WMI на локальных или удаленных компьютерах.

В качестве недостатка WMIC можно отметить отсутствие встроенной полноценной поддержки и обработки событий WMI.

Запуск WMIC. Использование встроенной справки

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

Для запуска WMIC в интерактивном режиме необходимо выполнить команду wmic в стандартном интерпретаторе команд cmd.exe или в диалоговом окне Выполнить (Run) в меню Пуск (Start). После этого на экран выводится стандартное приглашение WMIC, wmic:root\cli>.

После этого можно вводить с клавиатуры команды WMIC (регистр символов значения не имеет), которые запускаются после нажатия клавиши <Enter>. Например, если набрать в командной строке WMIC слово PROCESS и нажать <Enter>, то на экран выведется список всех процессов, запущенных в данный момент в системе:

wmic:root\cli>PROCESS
Caption          CommandLine
System Idle Process
System
smss.exe     \SystemRoot\System32\smss.exe
csrss.exe    C:\WINDOWS.1\system32\csrss.exe ObjectDirectory=.\. . .
services.exe  C:\WINDOWS.1\system32\services.exe
lsass.exe     C:\WINDOWS.1\system32\lsass.exe
svchost.exe  C:\WINDOWS.1\system32\svchost -k DcomLaunch
svchost.exe  C:\WINDOWS.1\system32\svchost -k rpcss
svchost.exe  C:\WINDOWS.1\System32\svchost.exe -k netsvcs
. . .

Если же ввести в командной строке WMIC слово OS, то мы увидим на экране свойства операционной системы, установленной на компьютере:

wmic:root\cli>OS
BootDevice               BuildNumber  BuildType          Caption
\Device\HarddiskVolume1  2600         Uniprocessor Free  Microsoft Windows . . .
14.1.

Естественно, это лишь самые простые примеры использования командной строки WMIC. Для того чтобы узнать о дополнительных возможностях WMIC, можно воспользоваться встроенной помощью, которая вызывается с помощью ключей /? или -?. Например, набрав один из этих ключей после слова PROCESS и нажав клавишу <Enter>, мы выведем справку, из которой, скажем, видно, что команда OS CALL позволяет выполнять некоторые действия над процессами:

wmic:root\cli>OS -?
OS - Управление установленными операционными системами.
СОВЕТ. BNF при работе с псевдонимом.
(<псевдоним> [WMI-объект] | <псевдоним> [<путь where>] | 
 [<псевдоним>] . . .
Использование:
OS ASSOC [<указатель формата>]
OS CALL <имя метода> [<список фактических параметров>]
OS CREATE <список значений>
OS DELETE
OS GET [<список свойств>] [<ключи get>]
OS LIST [<формат списка>] [<ключи>]
OS SET [<список значений>]

Выполнив теперь команду PROCESS CALL /?, мы получим краткое описание методов, которые могут быть вызваны при работе с процессами:

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)

Для получения более подробной помощи по этим методам нужно выполнить команду PROCESS CALL /?:FULL:

wmic:root\cli>PROCESS CALL /?:FULL
Вызов методов.
Использование:
CALL <имя метода> [<список фактических параметров>]
ЗАМЕЧАНИЕ. <список фактических параметров> ::= <факт. парам.> | 
  <факт. парам.>,  <список факти

Для псевдонима доступны следующие команды и методы:
Вызов    [ Ввод/Вывод ]Параметры и тип      Состояние
====     =====================                   ======
AttachDebugger                         (null)

Описание:
The AttachDebugger method launches the currently 
  registered debugger for this . . .

Create  [UNKNOWN]CommandLine(STRING)            (null)
              [UNKNOWN]CurrentDirectory(STRING)
              [UNKNOWN]ProcessStartupInformation(OBJECT)
              [UNKNOWN]ProcessId(UINT32)
Описание:
The Create method creates a new process. 
 It returns an integer value of 0 . . .
. . .

Ключи /? и -? можно ввести и сразу после приглашения WMIC. В этом случае будет выведена общая информация о глобальных ключах, доступных псевдонимах и командах WMIC.

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

Например, для того чтобы вывести в пакетном режиме на экран свойства операционной системы, нужно в командной строке Windows выполнить команду WMIC OS.

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

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

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

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

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

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

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