Новости из Блогов WMIC в примерах. Часть 1.

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 21 Apr 2012.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    WMIC в примерах. Часть 1.


    Незаслуженно забываемый инструмент под названием WMIC бывает довольно полезен, например когда нет желания или возможности заморачиваться со скриптами на PowerShell или на Vbs.

    PowerShell может быть элементарно не установлен, а на vbs писать просто лень, в итоге мы судорожно начинаем искать софт который нам соберет нужную информацию. Софта с нужным функционалом не находится потому то что есть платное, но нас душит жаба и поэтому мы садимся и пишем то что требуется руками :)

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

    Запуск инструмента производится с помощью команды wmic. В командной строке открывается приглашение вот такого вида:
    Code:
    wmic:root\cli>
    Функционал небогатый но он хорошо документирован.
    Code:
    wmic:root\cli>/?
    Если требуется полная справка то команда выглядит слегка неожиданно
    Code:
    wmic:root\cli>/?:full
    Информация о системе

    Получаем сведения о системе по команде
    Code:
    wmic:root\cli>os
    выводится довольно много информации и что бы хоть как то ее разделить есть команда
    Code:
    wmic:root\cli>os list /?
    Которая выводит список возможных параметров фильтрации информации.
    Для примера можно взять ключи STATUS или BRIEF
    Code:
    wmic:root\cli>os list Status
    wmic:root\cli>os list Brief
    Полученную информацию можно вывести в виде списка или таблицы
    Code:
    wmic:root\cli>os list Brief /format:list
    wmic:root\cli>os list Brief /format:table
    Для того что бы не перебирать все параметры можно получить всю в виде списка
    Code:
    wmic:root\cli>os get * /format:list
    С помощью данного инструмента можно получать информацию с удаленных хостов. Для этого достаточно использовать ключ /node: с указанием имени хоста.
    Code:
    wmic:root\cli>/node:"host-01" computersystem list brief /format:list
    wmic:root\cli>/node:"host-01", "host-02" computersystem list brief /format:list
    В случае если у вас много хостов то в качестве исходных данных можно подпихнуть файл.
    Code:
    wmic:root\cli>/node:@c:\Scripts\hostlist.txt computersystem list brief /format:list
    Если вы работаете не под учетной записью пользователя имеющего повышенные полномочия, я искренне надеюсь что это так и есть, то вам понадобится указывать учетные данные. Выполняется это в формате.
    Code:
    wmic:root\cli>/node:"host-01" /user:LAB\lab.admin computersystem list brief /format:list
    wmic:root\cli>/node:"host-01" /user:LAB\lab.admin /password:"$F#IPV&G5AWSY%Cx" computersystem list brief /format:list
    Если требуется вывести результат в файл то используем ключ «/Output»
    Code:
    wmic:root\cli>/node:@c:\Scripts\hostlist.txt /Output:"C:\Scripts\ProcessorReport.txt" cpu get Systemname,Name,Description,Manufacturer,AddressWidth,DeviceID /format:list
    Информация о дисках

    Сбор данных о дисках выполняется с той же легкостью и синтаксис запроса прост.
    Code:
    wmic:root\cli>logicaldisk list brief /format:list
    Собираем данные о всех дисках с типом «3″
    Code:
    wmic:root\cli>logicaldisk where drivetype=3 get Name,Size,Freespace
    Собираем данные о всех дисках с буквой «Z:»
    Code:
    wmic:root\cli>logicaldisk where name='Z:' get size,freespace,volumename
    Информация о логических дисках на удаленных хостах собирается аналогично первому пункту.


    Информация о сетевой карте

    Немного, но хоть что то…
    Code:
    wmic:root\cli>nic get * /format:list
    wmic:root\cli>nic get macaddress,description
    Информация о сервисах

    Для получения представления о том что можно делать с сервисами вводим
    Code:
    wmic:root\cli>service /?
    Выводится список методов в списке которых есть все нужное для создания, модификации существующих, остановки, старта и пр.

    Для фильтрации вывода используется стандартные команды «where», «and» или «or». Вот пример того как можно получить список всех запущенных сервисов имеющих тип запуска «Auto»
    Code:
    wmic:root\cli>service where 'startmode="Auto" AND state<>"Running"' get Name,Startmode,State
    Информация о процессах

    Следующим объектом для исследования будет команда process, которая позволяет получать информацию о запущенных процессах а так же управлять ими.

    Выводим список процессов так
    Code:
    wmic:root\cli>process list brief
    или так
    Code:
    wmic:root\cli>process get name,processid
    Ищем среди них cmd.exe
    Code:
    wmic:root\cli>process where description='cmd.exe' list brief
    Создаем новый процесс notepad.exe
    Code:
    wmic:root\cli>process call create notepad.exe
    Завершаем процесс по его ID
    Code:
    wmic:root\cli>process where processid="1000" call terminate
    Установленные программы и обновления

    Для получения списка установленных программ вводим
    Code:
    wmic:root\cli>product get name > programlist.txt
    Выводим список всех установленных обновлений в файл
    Code:
    wmic:root\cli>qfe list > updatelist.txt
    20.04.2012
    http://blog.wadmin.ru/
    http://blog.wadmin.ru/2012/04/wmic-examples/