Установка WMIC на Linux

При мониторинге Windows‑машины (сервер или рабочая станция) часто важно не устанавливать стороннее программное обеспечение на управляемую систему. Современные администраторы обычно разворачивают агента и управляют им централизованно, но без агента задача усложняется.
WMIC помогает в таких сценариях: это «белый» инструмент, работающий по WMI, который позволяет собирать информацию и выполнять действия на удалённой Windows‑системе через командную строку.
Что такое WMIC и зачем он нужен
WMIC (Windows Management Instrumentation Command‑line) — это клиент, использующий протокол WMI для управления Windows‑машинами. По сути, Microsoft объединила идеи Web‑Based Enterprise Management (WBEM) и Common Information Model (CIM) в модели управления объектами системы.
Коротко: WMIC позволяет отправлять запросы к WMI и получать структуру и свойства компонентов Windows, а также выполнять некоторые операции удалённо. Это полезно, когда нельзя или нежелательно ставить агент на целевую систему.

Важно помнить: Linux‑клиент WMIC обычно обладает ограниченным набором возможностей по сравнению с нативным Windows‑инструментом, но для базового инвентаря и ряда операций этого достаточно.
Установка WMIC в Linux
Ниже — пример последовательности команд для установки WMIC из исходников. Команды выполняются от имени пользователя с правами sudo и судя по примеру предполагают, что у вас есть доступ к /data/tools/ и установлен wget, bzip2, make и компилятор gcc.
sudo aptitude install autoconf
cd /data/tools/
wget http://www.openvas.org/download/wmi/wmi-1.3.14.tar.bz2
bzip2 -cd wmi-1.3.14.tar.bz2 | tar xf -
cd wmi-1.3.14/
sudo make "CPP=gcc -E -ffreestanding"
sudo cp Samba/source/bin/wmic /usr/local/bin/После установки бинарник wmic должен появиться в /usr/local/bin и быть доступен для запуска.
Важно: команды и пути в примере соответствуют исходному tarball. Не меняйте структуру директорий, если собираете из другого архива — проверьте содержимое перед копированием.
Общий синтаксис и параметры
Общий формат запуска WMIC:
wmic -U user%password //host "query"Ниже — переведённая таблица основных опций клиента WMIC (короткие объяснения параметров).
| Переменная | Описание |
|---|---|
| -?, –help | Показать подсказку по использованию |
| -A, –authentication-file=FILE | Получать учётные данные из файла |
| –delimiter=STRING | Разделитель при выводе нескольких значений, по умолчанию ‘|’ | | -d, –debuglevel=DEBUGLEVEL | Установить уровень отладки | | –debug-stderr | Отправлять отладочный вывод в STDERR | | -i, –scope=SCOPE | Использовать заданный NetBIOS scope | | -k, –kerberos=STRING | Использовать Kerberos | | -l, –log-basename=LOGFILEBASE | Базовое имя для лог/файлов отладки | | –leak-report | Включить отчёт о утечках talloc при выходе | | –leak-report-full | Включить подробный отчёт о talloc при выходе | | -m, –maxprotocol=MAXPROTOCOL | Установить максимальный уровень протокола | | –namespace=STRING | Пространство имён WMI, по умолчанию root\cimv2 | | -N, –no-pass | Не запрашивать пароль | | -n, –netbiosname=NETBIOSNAME | Основное NetBIOS‑имя | | –option=name=value | Установить опцию smb.conf из командной строки | | -O, –socket-options=SOCKETOPTIONS | Опции сокета | | –password=STRING | Пароль | | -P, –machine-pass | Использовать сохранённый пароль учётной записи машины (подразумевается -k) | | –realm=REALM | Имя realm для Kerberos | | -R, –name-resolve=NAME-RESOLVE-ORDER | Использовать только эти сервисы разрешения имён | | –simple-bind-dn=STRING | DN для простого bind | | -S, –signing=on|off|required | Установить состояние подписи клиента | | -s, –configfile=CONFIGFILE | Использовать альтернативный файл конфигурации | | –usage | Показать краткое сообщение об использовании | | –use-security-mechanisms=STRING | Ограничить набор механизмов аутентификации | | -U, –user=[DOMAIN]USERNAME[%PASSWORD] | Сетевое имя пользователя | | -W, –workgroup=WORKGROUP | Имя рабочей группы |
Примеры использования WMIC
WMIC позволяет быстро собрать информацию о системе и процессах удалённой машины. Несколько полезных примеров.
Получить информацию о системе:
wmic -U unknown //192.168.1.12 "select * from Win32_ComputerSystem"Получить список запущенных процессов (колонки: caption, name, parentprocessid, processid):
wmic -U unknown%oopsoops //192.168.1.12 "select caption, name, parentprocessid, processid from win32_process"
После выполнения команд вы увидите таблицу с запущенными процессами. В примере на скриншоте вывод был получен из Windows Command Prompt, но формат WMIC в Linux будет схожим по смыслу.
Практические советы и подводные камни
- Аутентификация: при использовании пароля в командной строке он может оказаться записан в истории shell. По возможности используйте файл аутентификации (-A) или токены Kerberos.
- Сетевые порты: WMI обычно работает поверх RPC/DCOM — в ряде случаев потребуется открыть дополнительные порты или настроить прокси/SSH‑туннель.
- Ограничения клиента: Linux‑версия может не поддерживать всех классов и методов WMI; для сложных операций лучше использовать нативные Windows‑инструменты.
Примечание: WMIC не заменяет полноценный агент мониторинга — он удобен для ad‑hoc запросов, инвентаризации и оперативных действий.
Когда WMIC не подходит
- Требуются постоянные автозапуск и телеметрия с минимальной задержкой — агент лучше.
- Необходима сложная удалённая конфигурация, включающая GUI‑взаимодействие или инсталляторы — WMIC ограничен.
- Среды с жёсткими требованиями к аудиту и контролю доступа: использование учётных данных через командную строку может нарушать политики безопасности.
Альтернативные подходы
- WinRM + PowerShell Remoting: более мощный и гибкий инструмент для удалённого управления Windows.
- WMI через Python (pywinrm, wmi‑client): скрипты дают больше автоматизации и контроля ошибок.
- Агентские решения (Prometheus node_exporter, Zabbix agent, Datadog): для постоянного мониторинга и оповещений.
Роль‑ориентированные чек‑листы
Администратор сети:
- Проверить сетевую связность и открытые порты.
- Подготовить учётные данные и, по возможности, Kerberos.
- Проверить совместимость namespace (root\cimv2).
Инженер безопасности:
- Использовать защищённые каналы (SSH‑туннель, VPN).
- Минимизировать хранение паролей в открытом виде.
- Логировать все операция и хранить логи в защищённом хранилище.
Разработчик автоматизации:
- Инкапсулировать команды в скрипты с проверкой ошибок.
- Тестировать ожидаемые схемы ответа на тестовой машине.
- Обеспечить её идемпотентность (повторяемость).
Критерии приёмки
- Установленный бинарник wmic доступен в PATH и запускается без ошибок.
- Выполнение базового запроса Win32_ComputerSystem возвращает ожидаемые поля.
- Логирование успешных/неуспешных попыток подключения настроено.
- Политики безопасности соблюдены: пароли не хранятся в открытом виде.
Безопасность и рекомендации по жёсткой конфигурации
- По возможности используйте Kerberos вместо передачи паролей.
- Отключайте неиспользуемые сетевые сервисы и ограничивайте доступ по IP.
- Включите аудит и централизованный сбор логов для всех операций WMIC.
- Применяйте принцип наименьших привилегий к учётным записям, используемым для запросов.
Небольшой глоссарий
- WMI: Windows Management Instrumentation — инфраструктура управления Windows.
- WBEM: Web‑Based Enterprise Management — набор стандартов для управления системами.
- CIM: Common Information Model — модель представления управляемых объектов.
Тест‑кейсы и приёмочные проверки
- Установка: бинарник копируется в /usr/local/bin и исполняемый (chmod +x).
- Подключение: wmic -U
% //127.0.0.1 “select name from Win32_OperatingSystem” возвращает имя ОС. - Безопасность: запуск скрипта без пароля не оставляет секретов в ~/.bash_history.
- Ошибки: при недоступности хоста клиент возвращает корректный код ошибки (не «успешно»).
Заключение
WMIC на Linux — удобный инструмент для быстрого доступа к WMI‑данным удалённых Windows‑машин без развёртывания агента. Он полезен для инвентаризации, диагностики и простых операций, но не предназначен для замены полноценной системы мониторинга. Следуйте рекомендациям по безопасности и тестируйте команды в контролируемой среде.
Если вы установили WMIC и использовали его в рабочем окружении — расскажите о своём опыте в комментариях. Также может быть полезна наша статья о различиях ядра Windows и ядра Linux для понимания архитектурных ограничений.
Краткая сводка:
- WMIC позволяет делать ad‑hoc запросы к WMI с Linux.
- Используйте Kerberos или файл аутентификации для безопасности.
- Для постоянного мониторинга лучше выбрать агентские решения.
Спасибо за прочтение! Напишите, если хотите шаблоны скриптов или примеры автоматизации под ваш сценарий.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone