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/