Wmi запрос из командной строки. Устранение проблем с доступом к WMI на удаленных компьютерах
WMI — это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows.
Служба удаленного управления Windows (WS-Management)
WMI – это протокол прикладного уровня, работающий поверх DCOM . Соответственно, открывать порты необходимо именно для DCOM , каких-либо своих специальных портов у WMI нет. DCOM , в свою очередь, протокол прикладного уровня, работающий поверх удалённого вызова процедур (Remote procedure call, RPC ). Вместе связка WMI-DCOM-RPC образует фундамет удалённого управления Windows . RPC использует порт TCP 135 на стороне удалённого ПК
для открытия RPC на сервере необходимо либо целиком открыть порт TCP 135 для входящих соединений, либо, если позволяет межсетевой экран, открыть порт TCP 135 только для службы RpcSs.
С открытием DCOM всё несколько сложнее. DCOM требует дополнительное TCP -соединение поверх RPC . Для подобных соединений TCP -порты на серверной стороне выделяются динамически. Сначала клиент по TCP 135 запрашивает номер порта для соединения с DCOM -сервером. Сервер выделяет клиенту новый порт и отправляет его номер в ответ. Клиент получает номер и создаёт второе TCP -соединение на порт с полученным номером. По умолчанию, DCOM может использовать весь диапазон от 1024 до 65535. Поэтому чтобы разрешить DCOM в общем случае приидётся … открыть все TCP -порты от 1024 и выше.
Во-вторых, если сетевой экран не позволяет назначать правила службам, то можно ограничить диапазон портов, разрешённых для DCOM . Для этого открываем Администрирование – Службы компонентов (или в командной строке набираем dcomcnfg.exe ). В открывшейся программе находим ветку «Мой компьютер» и открываем её свойства
В свойствах открываем вкладку «Набор протоколов», там, в свою очередь, открываем свойства «TCP/IP с ориентацией на подключения»
В свойствах TCP/IP по умолчанию – пустой список. В него можно добавить конкретный диапазон портов, которые будут использоваться DCOM . Какие именно порты выбрать – решать вам. Главное, чтобы не было других стандартных служб, уже занявших выбранные порты. Мне встречались рекомендации открывать не менее 1000 портов, так как очень многие системные программы используют DCOM . Так на скриншоте ниже я указываю, что DCOM должен работать по диапазону портов 20000-21000 .
После этого нужно перезагрузить сервер (перезапустить отдельно DCOM нельзя, слишком много на него завязано), и DCOM станет работать только по указанным портам.
Поскольку WMI-DCOM-RPC активно используются инфраструктурой Windows, то все приличные программные сетевые экраны имеют предустановки для них. В частности, брандмауэр Windows в режиме повышенной безопасности имеет группу правил «Инструментарий управления Windows (WMI)», состояющую из всего вышеперечисленного: TCP 135 для RpcSs, все порты для Winmgmt и unsecapp.exe. Включить эти правила можно из командной строки.
Здравствуйте, уважаемые читатели! Некоторые из вас возможно задавались вопросом как удалить программу на удаленном компьютере . Рядовому пользователю это скорей всего не нужно, а системному администратору какой-нибудь локальной сети это может понадобиться.
Для удаления и установки ПО на удаленных компьютерах существует множество различных решений и программных средств. В этой статье мы рассмотрим решение данного вопроса на основе встроенных средств windows.
Удалять программы на удаленных машинах нам поможет Windows Management Instrumentation или проще говоря WMI . В переводе на русский это инструментарий управления Windows .
Как запустить wmi
Запуск wmi выполняется из командной строки. Открыть командную строку можно из «Пуск -> Все программы -> Стандартные -> Командная строка» , либо просто нажимаете клавиши «WIN + R» , откроется окно «Выполнить» в котором в поле «открыть» набираете «cmd» и нажимаете «OK» .
В открывшемся окне командной строки набираем команду wmic и нажимаем «Enter» :
Таким образом мы запустили консольную утилиту для взаимодействия со структурой WMI на локальном или удаленном компьютере. Теперь с помощью язык запросов WMI Query Language (WQL) можно выполнять различные команды WMI.
Для примера получим весь список установленного ПО на удаленном компьютере . Для этого выполняем следующий запрос:
/node: product get name
Где вместо подставляем имя удаленной и локальной машины, с которой необходимо получить список установленных программ. Имя компьютера лучше заключить в кавычки. Жмем «Enter» , ждем некоторое время на сбор информации и получаем примерно следующую картину:
Как удалить программу с помощью WMI?
Удалить программу можно с помощью следующего запроса:
Где вместо вставляем имя компьютера с которого будет удаляться программа, а вместо имя удаляемой программы как в полученном списке ПО.
Например, нам необходимо удалить «Microsoft Office Professional Plus 2010». Тогда запрос будет выглядеть примерно так:
/node: product where name=»Microsoft Office Professional Plus 2010″ call uninstall
Нажимаем «Enter» и на запрос предложения удаления программы отвечаем Y :
wmic:rootcli>/node:»tep-ws000010″ product where name=»Microsoft Office Professional Plus 2010″ call uninstall
Execute (\TEP-WS000010ROOTCIMV2:Win32_Product.IdentifyingNumber=»»,Name=»Microsoft Office Professional Plus 2010″,Version=»14.0.4763.1000″) ->Uninstall () (Y/N/?)? Y
После попытки удаления будет выведено сообщение о результатах. В случае успешного удаления сообщение будет такого вида:
Method execution successful.
Out Parameters:
instance of __PARAMETERS
ReturnValue = 0;
>;
На этом все! До встречи в следующих выпусках!
Для сбора информации на удалённых компьютерах программа использует технологию WMI (Windows Management Instrumentation) — универсальное средство управления компьютерной системой. В большинстве случаев дополнительной настройки удаленных компьютеров в корпоративных сетях не требуется (при наличии домена и прав администратора). Однако, в целях безопасности доступ к WMI может быть по умолчанию ограничен на части компьютеров. Если не получается считать информацию с компьютеров по WMI, то требуется провести настройки прав доступа и политики безопасности.
ВНИМАНИЕ! Домашние версии ОС Windows не предназначены для работы в корпоративной сети и не поддерживают удалённое выполнение запросов WMI.
Если компьютер включен в сеть и имеются права администратора , то, как правило, возникают следующие типовые ошибки:
Предварительные проверки
Несмотря на то, что компьютер включен и отвечает на ICMP запросы (Ping), для соединения по WMI этого может быть недостаточно и выдается сообщение. Для работы WMI необходим запуск служб DCOM и RPC, а также разрешение их удаленной работы.
Проверьте запущены ли службы DCOM (dcomlaunch) и RPC (RpcSs).
Если у Вас используется сторонний (не встроенный) межсетевой экран (firewall), то производится в соответствии с его документацией. Правила указаны ниже. Настройки межсетевого экрана (firewall) производятся на удаленном компьютере и зависят от версии ОС.
Если используется не встроенный межсетевой экран (firewall) , то его настройка производится в соответствии с документацией на него. Для работы DCOM на удаленном компьютере откройте порты 135 и 445, а также добавьте модули ПО в список исключений (основной модуль программы и collect.exe) на локальном компьютере.
Правила для межсетевого экрана
Правила, необходимые для работы на удаленном компьютере:
- Для настройки 135-го порта DCOM: модуль — %systemroot%system32svchost.exe, сервис — rpcss, действие — разрешить, protocol — TCP, локальный порт 135 (то же самое для порта 445).
- Для сервиса WMI: направление — входящие, программа -%systemroot%system32svchost.exe, сервис — winmgmt, действие — разрешить, протокол — TCP, локальный порт — любой.
- Настройка входящих соединений для обратных вызовов с удаленного компьютера: направление — входящие, программа — %systemroot%system32wbemunsecapp.exe, действие — разрешить.
- Настройка исходящих команд WMI (winmgmt): направление — исходящие, программа — %systemroot%system32svchost.exe, служба — winmgmt, действие — разрешить, протокол — TCP, локальный порт — любой.
Настройка встроенного межсетевого экрана (firewall) для Windows Vista и более поздних версий Windows
- На «Панели управления » перейдите на вкладку «Система и безопасность «, откройте «Брандмауэр Windows «.
- Откройте диалог по ссылке «Разрешить запуск программы или компонента через Брандмауэр Windows «.
- Установите галочку для «Инструментарий управления WMI» .
Аналогичные действия можно выполнить при помощи команды:
netsh advfirewall firewall set rule group=»windows management instrumentation (wmi)» new enable=yes
Чтобы провести детальную настройку правил, используйте следующие команды:
-
Для открытия 135-го порта DCOM
netsh advfirewall firewall add rule dir=in name=»DCOM» program=%systemroot%system32svchost.exe service=rpcss action=allow protocol=TCP localport=135
netsh advfirewall firewall add rule dir=in name =»WMI» program=%systemroot%system32svchost.exe service=winmgmt action = allow protocol=TCP localport=any
netsh advfirewall firewall add rule dir=in name =»UnsecApp» program=%systemroot%system32wbemunsecapp.exe action=allow
netsh advfirewall firewall add rule dir=out name =»WMI_OUT» program=%systemroot%system32svchost.exe service=winmgmt action=allow protocol=TCP localport=any
Настройка встроенного межсетевого экрана (firewall) для Windows XP
- Выберите в меню «Пуск » пункт «Выполнить «, введите команду «gpedit.msc » и нажмите кнопку «OК «.
- Корень консоли «, «Конфигурация компьютера «, «Административные шаблоны», «Сеть «, «Сетевые подключения«, «Брандмауэр Windows » и «Профиль домена «.
- Брандмауэр Windows : Разрешать исключения «Элемент управления WMI » и выберите пункт «Свойства «.
- Выберите вариант «Включен » и нажмите кнопку «ОК «.
Можно попробовать также ввести команду:
netsh firewall set service RemoteAdmin enable
Эта строка позволяет разрешить в брандмауэре Windows порты, необходимые для работы удаленного администрирования и WMI. Однако, это может повлечь негативные последствия для безопасности компьютера. Поэтому рекомендуется прописывать адрес компьютера администратора при выполнении команды (чтобы только он мог подключаться):
netsh firewall set service RemoteAdmin enable custom IP-адрес/маска_администратора
Открытие порта DCOM
Перед тем как открывать порты в брандмауэре Windows, убедитесь, что в групповой политике включен параметр «Брандмауэр Windows «: «Разрешать локальные исключения для портов «. Для этого выполните следующие действия:
- Выберите в меню «Пуск » пункт «Выполнить «, введите команду «gpedit.msc » и нажмите кнопку «OК «.
- Последовательно разверните узлы «Корень консоли «, «Конфигурация компьютера «, «Административные шаблоны «, «Сеть «, «Сетевые подключения «, «Брандмауэр Windows » и «Профиль домена «.
- Правой кнопкой мыши щелкните элемент «Брандмауэр Windows: Разрешать локальные исключения для портов » и выберите пункт «Свойства «.
- Выберите вариант «Включен » и нажмите кнопку «ОК «.
Модели DCOM сопоставлен TCP-порт 135. Открыть порт можно, выполнив из командной строки следующую команду:
netsh firewall add portopening TCP 135 DCOM_TCP135
Второй способ
Брандмауэр Windows: Задать исключения портов «.
- Нажмите кнопку «Пуск » и выберите пункт «Панель управления «.
- Дважды щелкните значок «Брандмауэр Windows » и откройте вкладку «Исключения «.
- Нажмите кнопку «Добавить порт «.
- В поле «Имя » введите «DCOM_TCP135 «, а в поле «Номер порта » введите «135 «.
- Выберите вариант порт «ТСР » и нажмите кнопку «ОК «.
- Нажмите кнопку «ОК «.
- Попробуйте также открыть порт 445.
Добавление приложения в список исключений брандмауэра Windows.
Перед добавлением программ в список исключений брандмауэра Windows убедитесь, что в групповой политике включен параметр » «.
- Выберите в меню «Пуск » пункт «Выполнить «. Введите команду «gpedit.msc » и нажмите кнопку OК .
- Последовательно разверните узлы «Корень консоли «, «Конфигурация компьютера «, «Административные шаблоны «, «Сеть «, «Сетевые подключения», «Брандмауэр Windows» и «Профиль домена».
- Правой кнопкой мыши щелкните элемент «Брандмауэр Windows: Разрешать локальные исключения для программ » и выберите пункт «Свойства «.
- Выберите вариант «Включен » и нажмите кнопку ОК .
Чтобы добавить клиентское приложение в список исключений брандмауэра Windows, выполните из командной строки следующую команду:
netsh firewall add allowedprogram путь_к_программеNetworkInventoryExplorer.exe NetworkInventoryExplorer ENABLE
Второй способ
Настроить исключения для портов можно с помощью параметра «Брандмауэр Windows: Задать исключения для программ «:
- Нажмите кнопку «Пуск » и выберите пункт «Панель управления «.
- Дважды щелкните значок «Брандмауэр Windows » и откройте вкладку «Исключения «.
- Нажмите кнопку «Добавить программу «.
- Найдите NetworkInventoryExplorer.exe в папке программы (в «Program Files») и нажмите кнопку ОК .
- Нажмите кнопку ОК .
Устранение ошибки
Настройки для Vista и более поздних версий Windows
Начиная с Windows Vista появился контроль учетных записей пользователя (UAC). Для доступа по WMI необходимо отключить удаленный контроль учетный записей.
- Откройте редактор реестра.
- Нажмите «Пуск » — «Выполнить «, введите Regedit.exe.
- Перейдите на ветку
- Создайте параметр LocalAccountTokenFilterPolicy типа DWORD и пропишите значение равным «1». Иногда требуется перезагрузка.
Настройки CIMOM
Для компьютеров в одном домене или с доверительными отношениями между доменами это значение менять не следует!
Для компьютеров не из домена, между которыми нет доверительных отношений, потребуется изменить в реестре значение DWORD параметра
1 — разрешает обратные вызовы. Нужно установить значение равное «1»
Настройки для Windows XP
-
Для Windows XP не включена классическая модель доступа к ресурсам.
Если на удалённом компьютере в локальных политиках безопасности стоит модель «Сетевой доступ — модель совместного доступа и безопасности — гостевая «, измените модель на «Классическую (обычную)».
Настроить данный параметр безопасности можно, открыв соответствующую политику и развернув дерево консоли следующим образом:
Панель управленияАдминистрированиеЛокальная политика безопасностиПараметры безопасностиЛокальные политикиПараметры безопасностиСетевой доступ — модель совместного доступа и безопасности -> Классическая.
По умолчанию «Гостевая» модель включена в Windows XP Professional, — в семействе Windows Server 2003 и на компьютерах Windows XP Professional, присоединенных к домену.
Откажитесь от пустых паролей, либо отключите это ограничение. Настроить данный параметр безопасности можно, открыв соответствующую политику и развернув дерево консоли следующим образом:
Панель управленияАдминистрированиеЛокальная политика безопасностиПараметры безопасностиЛокальные политикиПараметры безопасностиУчётные записи: ограничить использование пустых паролей для консольного ввода -> Отключить.
Настройки DCOM
Настройки DCOM в Windows Vista не изменились и настраиваются также как и для Windows XP.
По умолчанию параметр должен быть включен, но лучше проверить его значение.
В разделе реестра HKLMSOFTWAREMICROSOFTOLE должно быть установлено значение EnableDCOM равным «Y».
- Выберите в меню «Пуск » пункт «Выполнить «, введите команду «DCOMCNFG » и нажмите кнопку «OК «.
- В диалоговом окне «Службы компонентов » последовательно разверните узлы «Службы компонентов «, «Компьютеры » и «Мой компьютер «.
- На панели инструментов нажмите кнопку «Настройка моего компьютера «. Появится диалоговое окно «Мой компьютер «.
- В диалоговом окне «Мой компьютер » перейдите на вкладку «Безопасность СОМ «.
- В разделе «Разрешения на запуск и активацию » нажмите кнопку «Изменить ограничения «.
- Если требуемое имя пользователя или группы отсутствует в списке «Группы или пользователи «, в диалоговом окне «Разрешение на запуск » выполните следующие действия.
- В диалоговом окне «Разрешение на запуск » нажмите кнопку «Добавить «.
- В диалоговом окне «Выбор: Пользователи, Компьютеры или Группы » добавьте нужное имя пользователя или группы в поле «Введите имена выбираемых объектов » и нажмите кнопку «OК «.
- В диалоговом окне «Разрешение на запуск » выделите в списке «Группы или пользователи » пользователя или группу. В списке «Разрешения для пользователя » в столбце «Разрешить » установите флажок у записи «Удаленный запуск » и нажмите кнопку «OК «.
- Запустите Dcomcnfg в консоли;
- Перейдите к узлу «Службы компонентов/Компьютеры/Мой компьютер «;
- Из контекстного меню вызовите диалог «Свойства «;
- Перейдите на вкладку «Безопасность COM «;
- Проверьте права доступа.
- В меню «Пуск » — «Выполнить » введите wmimgmt.msc. Будет открыт Элемент управления WMI (локальный ).
- Через контекстное меню по правой кнопки мыши выберите пункт меню «Свойства «.
- Перейдите на вкладку «Безопасность «.
- Выберите элемент «Root «.
- Нажмите кнопку «Безопасность «. В появившемся списке найдите пользователя или группу пользователей, от имени которой будет производиться подключение.
- Включите галочку «Включить удаленно «, а также «Включить учетную запись «.
Диагностика соединения по WMI
Вы можете протестировать службу WMI на наличие ошибок. Сделать это можно двумя способами.
Первый способ:
- В папке «System32wbem» есть программа wbemtest.exe. Запустите её.
- В окне «Пространство имен » нужно ввести: \ rootcimv2 (например, \SKLAD-13rootcimv2).
- В поля «Пользователь » и «Пароль » введите данные своей учётной записи с правами администратора на удаленном ПК. Желательно попробовать ввести оба варианта Domain name username и просто username в качестве логина. Тестовая программа попытается соединиться и выдаст код ошибки. Пришлите его нам по email, мы его проанализируем и попытаемся диагностировать проблему.
Второй способ:
- Скачайте с нашего официального сайта утилиту для диагностики WMI (https://www.10-strike.com/tools/wmidiag.zip).
- Запустите файл WMDiag.vbs.
- На экране откроется окно с предупреждением о том, что программа не будет выдавать никаких окон в течение нескольких минут. Нажмите «ОК «.
- Подождите 3-4 минуты. После окончания тестирования откроется файл с отчетом. Пожалуйста, сохраните следующие файлы:
c:Documents and Settings local settingsTempwmdiag_*.log
c:Documents and Settings local settingsTempwmdiag_*.txt
c:Documents and Settings local settingsTempwmdiag_*.csv
Программа «10-Страйк: Инвентаризация Компьютеров» — удаленный опрос и инвентаризация ПК предприятия по сети. Создание отчетов по «железу» и ПО, мониторинг изменений, обнаружение проблем, оповещение администратора. Легко установить и настроить. Возьмите свой парк компьютеров под контроль!
Скачайте бесплатную 30-дневную версию прямо сейчас и попробуйте.
Не раз сталкивался с проблемами в работе службы WMI и ее компонентах. Наличие проблем в подсистеме WMI является критичным с точки зрения нормального функционирования системы, поэтому администратору приходится прибегать к тем или иным трюкам, позволяющим восстановить работоспособность WMI. В этой статье мы опишем достаточно простую методику диагностирования и устранения неполадок в службе WMI.
О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:
- Ошибки обработки WMI запросов в системных журналах и логах приложений
- Ошибки , завязанные на WMI (некорректная работа , и пр.)
- Ошибки в работе / невозможность установки агентов SCCM/SCOM
- Ошибки в работе скриптов (vbs или powershell), использующих пространство имен WMI
В первую очередь нужно проверить имеется ли в системе служба Windows Management Instrumentation (Winmgmt) и включена ли она.
Если служба присутствует и находится в состоянии Started, рекомендуется протестировать работоспособность WMI, обратившись к ней с помощью простого wmi-запроса. С помощью Powershell, например, это можно сделать так:
Если при выполнении простейшего WMI-запроса система возвращает ошибку (на скриншоте приведен пример корректного ответа службы WMI), вероятно имеет место некорректное функционирование сервиса WMI или ряда его подсистем, повреждение репозитория WMI или другие проблемы.