Wmi запрос из командной строки. Устранение проблем с доступом к WMI на удаленных компьютерах

Windows Management Instrumentation

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?

Удалить программу можно с помощью следующего запроса:

/node:{имя компьютера} product where name={название программы} call uninstall

Где вместо {имя компьютера} вставляем имя компьютера с которого будет удаляться программа, а вместо {название программы} имя удаляемой программы как в полученном списке ПО.

Например, нам необходимо удалить «Microsoft Office Professional Plus 2010». Тогда запрос будет выглядеть примерно так:

/node:{home2} product where name="Microsoft Office Professional Plus 2010" call uninstall

Нажимаем «Enter» и на запрос предложения удаления программы отвечаем Y :

wmic:root\cli>/node:"tep-ws000010" product where name="Microsoft Office Professional Plus 2010" call uninstall
Execute (\\TEP-WS000010\ROOT\CIMV2:Win32_Product.IdentifyingNumber="{90140000-0011—0000-1000-0000000FF1CE}",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) на локальном компьютере.

Правила для межсетевого экрана

Правила, необходимые для работы на удаленном компьютере:

  1. Для настройки 135-го порта DCOM: модуль - %systemroot%\system32\svchost.exe, сервис - rpcss, действие - разрешить, protocol - TCP, локальный порт 135 (то же самое для порта 445).
  2. Для сервиса WMI: направление - входящие, программа -%systemroot%\system32\svchost.exe, сервис - winmgmt, действие - разрешить, протокол - TCP, локальный порт - любой.
  3. Настройка входящих соединений для обратных вызовов с удаленного компьютера: направление - входящие, программа - %systemroot%\system32\wbem\unsecapp.exe, действие - разрешить.
  4. Настройка исходящих команд WMI (winmgmt): направление - исходящие, программа - %systemroot%\system32\svchost.exe, служба - winmgmt, действие - разрешить, протокол - TCP, локальный порт - любой.

Настройка встроенного межсетевого экрана (firewall) для Windows Vista и более поздних версий Windows

  1. На "Панели управления " перейдите на вкладку "Система и безопасность ", откройте "Брандмауэр Windows ".
  2. Откройте диалог по ссылке "Разрешить запуск программы или компонента через Брандмауэр Windows ".
  3. Установите галочку для "Инструментарий управления WMI" .

Аналогичные действия можно выполнить при помощи команды:

netsh advfirewall firewall set rule group="windows management instrumentation (wmi)" new enable=yes

Чтобы провести детальную настройку правил, используйте следующие команды:

  1. Для открытия 135-го порта DCOM
  2. netsh advfirewall firewall add rule dir=in name="DCOM" program=%systemroot%\system32\svchost.exe service=rpcss action=allow protocol=TCP localport=135

  3. Настройка исключений для сервиса WMI (winmgmt)
  4. netsh advfirewall firewall add rule dir=in name ="WMI" program=%systemroot%\system32\svchost.exe service=winmgmt action = allow protocol=TCP localport=any

  5. Настройка входящих соединений для обратных вызовов с удаленного компьютера
  6. netsh advfirewall firewall add rule dir=in name ="UnsecApp" program=%systemroot%\system32\wbem\unsecapp.exe action=allow

  7. Настройка исходящих команд WMI (winmgmt)
  8. netsh advfirewall firewall add rule dir=out name ="WMI_OUT" program=%systemroot%\system32\svchost.exe service=winmgmt action=allow protocol=TCP localport=any

Настройка встроенного межсетевого экрана (firewall) для Windows XP

Разрешение удаленного администрирования

  1. Выберите в меню "Пуск " пункт "Выполнить ", введите команду "gpedit.msc " и нажмите кнопку "".
  2. Корень консоли ", "Конфигурация компьютера ", "Административные шаблоны", "Сеть ", "Сетевые подключения ", "Брандмауэр Windows " и "Профиль домена ".
  3. Брандмауэр Windows : Разрешать исключения "Элемент управления WMI " и выберите пункт "Свойства ".
  4. Выберите вариант "Включен " и нажмите кнопку "ОК ".

Можно попробовать также ввести команду:

netsh firewall set service RemoteAdmin enable

Эта строка позволяет разрешить в брандмауэре Windows порты, необходимые для работы удаленного администрирования и WMI. Однако, это может повлечь негативные последствия для безопасности компьютера. Поэтому рекомендуется прописывать адрес компьютера администратора при выполнении команды (чтобы только он мог подключаться):
netsh firewall set service RemoteAdmin enable custom IP-адрес/маска_администратора

Открытие порта DCOM

Перед тем как открывать порты в брандмауэре Windows, убедитесь, что в групповой политике включен параметр "Брандмауэр Windows ": "Разрешать локальные исключения для портов ". Для этого выполните следующие действия:

  1. Выберите в меню "Пуск " пункт "Выполнить ", введите команду "gpedit.msc " и нажмите кнопку "".
  2. Последовательно разверните узлы "Корень консоли ", "Конфигурация компьютера ", "Административные шаблоны ", "Сеть ", "Сетевые подключения ", "Брандмауэр Windows " и "Профиль домена ".
  3. Правой кнопкой мыши щелкните элемент "Брандмауэр Windows: Разрешать локальные исключения для портов " и выберите пункт "Свойства ".
  4. Выберите вариант "Включен " и нажмите кнопку "ОК ".

Модели DCOM сопоставлен TCP-порт 135. Открыть порт можно, выполнив из командной строки следующую команду:

netsh firewall add portopening TCP 135 DCOM_TCP135

Второй способ

Брандмауэр Windows: Задать исключения портов ".

  1. Нажмите кнопку "Пуск " и выберите пункт "Панель управления ".
  2. Дважды щелкните значок "Брандмауэр Windows " и откройте вкладку "Исключения ".
  3. Нажмите кнопку "Добавить порт ".
  4. В поле "Имя " введите "DCOM_TCP135 ", а в поле "Номер порта " введите "135 ".
  5. Выберите вариант порт "ТСР " и нажмите кнопку "ОК ".
  6. Нажмите кнопку "ОК ".
  7. Попробуйте также открыть порт 445.

Добавление приложения в список исключений брандмауэра Windows.

Перед добавлением программ в список исключений брандмауэра Windows убедитесь, что в групповой политике включен параметр "".

  1. Выберите в меню "Пуск " пункт "Выполнить ". Введите команду "gpedit.msc " и нажмите кнопку .
  2. Последовательно разверните узлы "Корень консоли ", "Конфигурация компьютера ", "Административные шаблоны ", "Сеть ", "Сетевые подключения", "Брандмауэр Windows" и "Профиль домена".
  3. Правой кнопкой мыши щелкните элемент "Брандмауэр Windows: Разрешать локальные исключения для программ " и выберите пункт "Свойства ".
  4. Выберите вариант "Включен " и нажмите кнопку ОК .

Чтобы добавить клиентское приложение в список исключений брандмауэра Windows, выполните из командной строки следующую команду:
netsh firewall add allowedprogram путь_к_программе\NetworkInventoryExplorer.exe NetworkInventoryExplorer ENABLE

Второй способ

Настроить исключения для портов можно с помощью параметра "Брандмауэр Windows: Задать исключения для программ ":

  1. Нажмите кнопку "Пуск " и выберите пункт "Панель управления ".
  2. Дважды щелкните значок "Брандмауэр Windows " и откройте вкладку "Исключения ".
  3. Нажмите кнопку "Добавить программу ".
  4. Найдите NetworkInventoryExplorer.exe в папке программы (в "Program Files") и нажмите кнопку ОК .
  5. Нажмите кнопку ОК .

Устранение ошибки

Настройки для Vista и более поздних версий Windows

Начиная с Windows Vista появился контроль учетных записей пользователя (UAC). Для доступа по WMI необходимо отключить удаленный контроль учетный записей.

  1. Откройте редактор реестра.
  2. Нажмите "Пуск " - "Выполнить ", введите Regedit.exe.
  3. Перейдите на ветку
  4. Создайте параметр LocalAccountTokenFilterPolicy типа DWORD и пропишите значение равным "1". Иногда требуется перезагрузка.

Настройки CIMOM

Для компьютеров в одном домене или с доверительными отношениями между доменами это значение менять не следует!

Для компьютеров не из домена, между которыми нет доверительных отношений, потребуется изменить в реестре значение DWORD параметра

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\AllowAnonymousCallback

1 - разрешает обратные вызовы. Нужно установить значение равное "1"

Настройки для Windows XP

  1. Для Windows XP не включена классическая модель доступа к ресурсам.
  2. Если на удалённом компьютере в локальных политиках безопасности стоит модель "Сетевой доступ - модель совместного доступа и безопасности - гостевая ", измените модель на "Классическую (обычную)".
    Настроить данный параметр безопасности можно, открыв соответствующую политику и развернув дерево консоли следующим образом:

    Панель управления\Администрирование\Локальная политика безопасности\Параметры безопасности\Локальные политики\Параметры безопасности\Сетевой доступ - модель совместного доступа и безопасности -> Классическая.

    По умолчанию "Гостевая" модель включена в Windows XP Professional, - в семействе Windows Server 2003 и на компьютерах Windows XP Professional, присоединенных к домену.

  3. Для Windows XP при использовании пустых паролей могут возникнуть проблемы с подключением, если на удалённом компьютере в локальных политиках безопасности включен параметр "Учётные записи: ограничить использование пустых паролей для консольного ввода " (включено по умолчанию в Windows XP SP2).
  4. Откажитесь от пустых паролей, либо отключите это ограничение. Настроить данный параметр безопасности можно, открыв соответствующую политику и развернув дерево консоли следующим образом:

    Панель управления\Администрирование\Локальная политика безопасности\Параметры безопасности\Локальные политики\Параметры безопасности\Учётные записи: ограничить использование пустых паролей для консольного ввода -> Отключить.

Настройки DCOM

Настройки DCOM в Windows Vista не изменились и настраиваются также как и для Windows XP.

  1. Включение DCOM
  2. По умолчанию параметр должен быть включен, но лучше проверить его значение.

    В разделе реестра HKLM\SOFTWARE\MICROSOFT\OLE должно быть установлено значение EnableDCOM равным "Y".

  3. Разрешение на удаленный запуск DCOM
  • Выберите в меню "Пуск " пункт "Выполнить ", введите команду "DCOMCNFG " и нажмите кнопку "".
  • В диалоговом окне "Службы компонентов " последовательно разверните узлы "Службы компонентов ", "Компьютеры " и "Мой компьютер ".
  • На панели инструментов нажмите кнопку "Настройка моего компьютера ". Появится диалоговое окно "Мой компьютер ".
  • В диалоговом окне "Мой компьютер " перейдите на вкладку "Безопасность СОМ ".
  • В разделе "Разрешения на запуск и активацию " нажмите кнопку "Изменить ограничения ".
  • Если требуемое имя пользователя или группы отсутствует в списке "Группы или пользователи ", в диалоговом окне "Разрешение на запуск " выполните следующие действия.
    1. В диалоговом окне "Разрешение на запуск " нажмите кнопку "Добавить ".
    2. В диалоговом окне "Выбор: Пользователи, Компьютеры или Группы " добавьте нужное имя пользователя или группы в поле "Введите имена выбираемых объектов " и нажмите кнопку "".
  • В диалоговом окне "Разрешение на запуск " выделите в списке "Группы или пользователи " пользователя или группу. В списке "Разрешения для пользователя " в столбце "Разрешить " установите флажок у записи "Удаленный запуск " и нажмите кнопку "".
  • Настройка прав доступа к DCOM
    • Запустите Dcomcnfg в консоли;
    • Перейдите к узлу "Службы компонентов/Компьютеры/Мой компьютер ";
    • Из контекстного меню вызовите диалог "Свойства ";
    • Перейдите на вкладку "Безопасность COM ";
    • Проверьте права доступа.

  • Проверьте свойства безопасности элемента управления WMI
    • В меню "Пуск " - "Выполнить " введите wmimgmt.msc. Будет открыт Элемент управления WMI (локальный ).
    • Через контекстное меню по правой кнопки мыши выберите пункт меню "Свойства ".
    • Перейдите на вкладку "Безопасность ".
    • Выберите элемент "Root ".
    • Нажмите кнопку "Безопасность ". В появившемся списке найдите пользователя или группу пользователей, от имени которой будет производиться подключение.
    • Включите галочку "Включить удаленно ", а также "Включить учетную запись ".

    Диагностика соединения по WMI

    Вы можете протестировать службу WMI на наличие ошибок. Сделать это можно двумя способами.

    Первый способ:

    1. В папке "System32\wbem\" есть программа wbemtest.exe. Запустите её.
    2. В окне "Пространство имен " нужно ввести: \\<имя компьютера>\root\cimv2 (например, \\SKLAD-13\root\cimv2).
    3. В поля "Пользователь " и "Пароль " введите данные своей учётной записи с правами администратора на удаленном ПК. Желательно попробовать ввести оба варианта Domain name \ username и просто username в качестве логина. Тестовая программа попытается соединиться и выдаст код ошибки. Пришлите его нам по email, мы его проанализируем и попытаемся диагностировать проблему.

    Второй способ:

    1. Скачайте с нашего официального сайта утилиту для диагностики WMI (https://www.10-strike.com/tools/wmidiag.zip).
    2. Запустите файл WMDiag.vbs.
    3. На экране откроется окно с предупреждением о том, что программа не будет выдавать никаких окон в течение нескольких минут. Нажмите "ОК ".
    4. Подождите 3-4 минуты. После окончания тестирования откроется файл с отчетом. Пожалуйста, сохраните следующие файлы:
      c:\Documents and Settings\\local settings\Temp\wmdiag_*.log
      c:\Documents and Settings\\local settings\Temp\wmdiag_*.txt
      c:\Documents and Settings\\local settings\Temp\wmdiag_*.csv

    Программа "10-Страйк: Инвентаризация Компьютеров" - удаленный опрос и инвентаризация ПК предприятия по сети. Создание отчетов по "железу" и ПО, мониторинг изменений, обнаружение проблем, оповещение администратора. Легко установить и настроить. Возьмите свой парк компьютеров под контроль!

    Скачайте бесплатную 30-дневную версию прямо сейчас и попробуйте.

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

    О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:

    • Ошибки обработки WMI запросов в системных журналах и логах приложений
    • Ошибки , завязанные на WMI (некорректная работа , и пр.)
    • Ошибки в работе / невозможность установки агентов SCCM/SCOM
    • Ошибки в работе скриптов (vbs или powershell), использующих пространство имен WMI

    В первую очередь нужно проверить имеется ли в системе служба Windows Management Instrumentation (Winmgmt) и включена ли она.

    Если служба присутствует и находится в состоянии Started, рекомендуется протестировать работоспособность WMI, обратившись к ней с помощью простого wmi-запроса. С помощью Powershell, например, это можно сделать так:

    Get-wmiobject Win32_OperatingSystem

    Если при выполнении простейшего WMI-запроса система возвращает ошибку (на скриншоте приведен пример корректного ответа службы WMI), вероятно имеет место некорректное функционирование сервиса WMI или ряда его подсистем, повреждение репозитория WMI или другие проблемы.

    Утилита WMIDiag

    Для «тонкой» диагностики службы WMI существует официальная утилита Microsoft — WMIDiag (Microsoft WMI Diagnosis). Утилита представляет собой vbs скрипт, который проверяет различные подсистемы WMI и записывает собранную информацию в лог файлы (по умолчанию логи находятся в каталоге %TEMP% — C:\USERS\%USERNAME%\APPDATA\LOCAL\TEMP\ ). Получившийся отчет состоит из файлов, имена которых начинаются с WMIDIAG-V2.1 и включает в себя следующие типы фалов:

    • .log файлы содержат подробный отчет об активности и работе утилиты WMIDiag
    • .txt файлы содержат итоговые отчеты о найденных ошибках, на которые стоит обратить внимание
    • В.csv файлах содержится информация, нужная для долгосрочного анализа работы подсистемы WMI

    Совет . В 64 битных версиях Windows wmidiag нужно запускать так:

    C:\windows\System32\cscript.exe wmidiag.vbs

    в противном случае появится ошибка: WMIDiag must be run from native 64-bit environment. It is not supported in Wow64 .

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

    В общем случае, WMIDiag может дать информацию по исправлению частных ошибок в WMI , но в большинстве случаев процесс это довольно трудоемкий и стоит потраченного времени только при решении инцидентов в критичных системах (как правило, на продуктивных серверах). Для массового сегмента рабочих станций пользователей гораздо проще «бить по площадям» и решать проблему работы WMI более радикально.

    Перерегистрация библиотек WMI и перекомпиляция mof файлов

    Следующий скрипт представляет собой «мягкий» вариант восстановления работоспособности службы WMI на отдельно взятом компьютере (выполняется перерегистрация dll библиотек и службы WMI, перекомпилируются mof файлы). Данная процедура является безопасной и ее выполнение не должно привести к каким-либо новым проблемам с системой.

    Sc config winmgmt start= disabled net stop winmgmt cd %windir%\system32\wbem for /f %%s in ("dir /b *.dll") do regsvr32 /s %%s wmiprvse /regserver winmgmt /regserver sc config winmgmt start= auto net start winmgmt for /f %%s in ("dir /b *.mof") do mofcomp %%s for /f %%s in ("dir /b *.mfl") do mofcomp %%s

    Указанные команды можно выполнить путем простой вставки в окно командой строки, либо сохранить код в bat файле и запустить его с правами администратора. После окончания работы скрипта, систему нужно перезагрузить и вновь проверить работу WMI.

    Пересоздание репозитория (хранилища) WMI

    В том случае, если предыдущий способ не помог, придется перейти к более «жесткому» способу восстановления работоспособности службы WMI, заключающегося в пересоздании хранилища.

    WMI репозиторий (хранилище) находится в каталоге %windir%\System32\Wbem\Repository и представляет собой базу данных, в которой содержится информация о метаданных и определениях WMI классов. В некоторых случаях репозитория WMI может содержать статическую информацию классов. При повреждении репозитория WMI, в работе службы Windows Management Instrumentation (Winmgmt) могут наблюдаться ошибки вплоть до полной невозможности ее запустить.

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

    Совет . На практике бывают случаи, когда пересоздание хранилища WMI приводит к проблемам со сторонним софтом. Вызван этот эффект тем, что все записи в базе WMI обнуляются (до состояния чистой системы). Такое ПО, вероятно, придется переустанавливать в режиме восстановления.

    В Windows Vista и выше проверить целостность репозитория WMI можно с помощью команды:

    Winmgmt /verifyrepository

    Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT), стоит попробовать выполнить «мягкое» восстановление репозитория:

    Winmgmt /salvagerepository

    И перезапустить службу wmi:

    Net stop Winmgmt net start Winmgmt

    Если описанная выше команда не помогла, выполняем сброс репозитория на начальное состояние (hard reset) так:

    Winmgmt /resetrepository

    В том случае, если команды Winmgmt /salvagerepository и Winmgmt /resetrepository желаемого эффекта не дали, стоит попробовать выполнить «жесткое» пересоздание базы WMI вручную таким сценарием:

    Sc config winmgmt start= disabled net stop winmgmt cd %windir%\system32\wbem winmgmt /kill winmgmt /unregserver winmgmt /regserver winmgmt /resyncperf if exist Repos_bakup rd Repos_bakup /s /q rename Repository Repos_bakup regsvr32 /s %systemroot%\system32\scecli.dll regsvr32 /s %systemroot%\system32\userenv.dll for /f %%s in ("dir /b *.dll") do regsvr32 /s %%s for /f %%s in ("dir /b *.mof") do mofcomp %%s for /f %%s in ("dir /b *.mfl") do mofcomp %%s sc config winmgmt start= auto net start winmgmt wmiprvse /regserver

    Данный скрипт полностью пересоздает хранилище WMI (старый репозитория сохраняется в каталоге Repos_bakup). После окончания работы скрипта компьютер нужно перезагрузить, после чего протестировать работу службы WMI простым запросом.

    В этой статье мы собрали типовые методики позволяющие устранить неполадки в работе службы WMI и ее подсистемах.

    В Windows 2000 реализован ряд функций, которые упрощают процесс управления операционной системой. К числу новых возможностей относится и Windows Management Instrumentation (WMI) - интерфейс, обеспечивающий взаимодействие с компонентами системы, в общем случае доступными лишь через особые механизмы. WMI можно использовать в различных целях, в частности для управления компьютерами с помощью сценариев.

    Одной из причин успешного старта Windows NT в начале 90-х была относительная простота использования операционной системы. Пользователи, освоившие Windows 3.1, имели все основания надеяться, что смогут управлять простыми сетями на базе NT. Возможно, сегодня это звучит невероятно, но не надо забывать о том, что NT 3.1 все-таки намного проще, чем Windows 2000. Одного взгляда на панель управления NT было достаточно, чтобы получить представление о ее возможностях.

    По мере развития системы интерфейс пользователя стал еще более дружественным. Каждая процедура Windows 2000 снабжена программой-мастером, а каждый объект имеет список свойств Properties с закладками. К диалоговому окну ведет несколько различных путей, а с помощью консоли MMC можно создавать настраиваемые инструментальные наборы с новыми функциями, в том числе разработанными независимыми компаниями.

    По мнению опытных администраторов, простой графический интерфейс часто слишком медлителен. Некоторые задачи можно решить из командной строки, но ее возможности не столь широки, как у графических инструментов. Часть операций Windows 2000 выполняется быстрее, если обратиться к тем же интерфейсам управления, которые используются графическими инструментами, но не через пользовательский интерфейс, а посредством сценариев. Благодаря WMI доступ почти к любому компоненту операционной системы можно получить с помощью одного интерфейса и языков сценариев. Например, без WMI невозможно напрямую обратиться к Win32 API, используя VBScript.

    Что такое WMI?

    WMI - ядро системы управления Windows 2000 и полезное дополнение к другим операционным системам Win32. WMI обеспечивает интерфейс к элементам операционной системы для инструментов MMC и сценариев с помощью CIMOM (Common Infor-mation Model Object Manager) - базы данных объектов, представляющих эти элементы. Благодаря инструментам и сценариям WMI не нужно использовать различные API для обращения к разным компонентам операционной системы. Эти компоненты стыкуются через WMI, как показано на Рисунке 1, а инструменты и сценарии могут читать и записывать данные с помощью WMI.

    Windows 2000 и Windows 98 совместимы с WMI, но его можно установить и на машинах с Windows 95 и NT 4.0 с пакетом исправлений Service Pack 4 (SP4) или более поздних версий. Более подробно об инсталляции WMI на компьютерах с NT 4.0 и Windows 95 рассказано во врезке «WMI для NT 4.0 и Windows 95». Таким образом, для дистанционного управления с помощью WMI вовсе не обязательно работать с Windows 2000. Но, безусловно, нельзя обратиться к Windows 2000 Perfor-mance Monitor с удаленного компьютера, если сценарий WMI работает на машине с Windows 9x, не имеющей Performance Monitor.

    Как уже упоминалось, благодаря WMI можно использовать единый интерфейс для доступа ко многим компонентам операционной системы. В результате с помощью единственного запроса можно собирать информацию разнообразного типа и упростить поиск взаимосвязей между разнородными данными. Если локальная и удаленная машины совместимы с WMI, то этот интерфейс можно использовать для дистанционного управления компьютерами. Но не все утилиты командной строки Windows 2000 имеют синтаксис, позволяющий задействовать их на удаленной машине.

    WMI - реализация модели управления предприятием на базе Web, Web-Based Enterprise Management (WBEM), созданной рабочей группой по управлению распределенными системами Distributed Management Task Force (DMTF) при участии примерно десятка компаний, таких, как Com-paq, Sun Microsystems и Microsoft. Задачей WBEM была разработка стандартного набора интерфейсов для управления средой предприятия. Важные компоненты модели WBEM - модель данных (или средство описания и определения объектов), спецификация кодирования и транспортная модель для передачи данных между клиентом и сервером.

    В качестве модели данных WBEM используется модель Common Information Model (CIM). CIM представляет собой стандартную систему именования, или схему (schema), для физических и логических компонентов компьютера, таких, как логический раздел жесткого диска, экземпляр исполняемого приложения или кабель. Схема нужна для того, чтобы любой пользователь мог обращаться ко всем элементам CIM, используя одни и те же термины для описания этих элементов и связи с ними.

    CIM - объектно-ориентированная схема, поэтому для описания ее компонентов используется объектно-ориентированная терминология. CIM содержит классы, которые представляют собой шаблоны управляемых элементов. Объект - экземпляр класса, представляющий базовый компонент системы. Пространство имен - набор классов для специализированной области управления. Классы содержат свойства и методы.

    Существует три уровня CIM. Базовая модель (core model) содержит определения классов, общих для всех областей управления. Общая модель (common model) хранит определения классов, общих для определенных областей управления, но независимых от особенностей той или иной операционной системы или машины; данная модель служит основой для схем, ориентированных на конкретную технологию. Модели расширений (extension models) содержат определения классов, специфичные для конкретной операционной системы или другой технологии.

    WMI - модель расширения Micro-soft для платформы компонентов Win32, она расширяет спецификацию CIM 2.0. Для обращения к классу и свойству WMI используется формат extensionprefix_classname.propertyname. Так, в метке Win32_Compu-terSystem.Name Win32 - префикс классов расширения WMI, расположенных в пространстве имен cimv2 схемы CIM; ComputerSystem - класс, а Name - свойство.

    Множество команд сценариев WMI связано с установкой и чтением свойств. Пока существует немного методов WMI, но со временем их станет больше, как и методов CIM.

    Комплекс инструментов разработки WMI

    Классы CIM и Win32 можно просмотреть с помощью комплекта инструментальных средств разработки SDK WMI. Его можно загрузить по адресу: . Размер файла весьма велик - 8 Мбайт.

    Полный список системных требований приведен в файле README по адресу: http://www.msdn.microsoft.com/downloads/ sdks/wmi/readme.asp , ниже перечислены основные из них. Необходимо иметь операционную систему Windows 2000 или NT 4.0 SP4 или более поздней версии. SDK нельзя установить на системах Windows 9x, даже если на данной платформе можно инсталлировать WMI. Для работы с элементами ActiveX необходим браузер Microsoft Internet Explorer (IE) 5.0. Другие минимальные требования - процессор Pentium, 32 Мбайт оперативной памяти, 40 Мбайт на диске и видеокарта с количеством цветов не менее 256 при разрешении 800x600. Этим системным требованиям удовлетворяет любой компьютер, работающий под Windows 2000. Если в машине нет сетевой платы, то CIMOM не сможет функционировать в качестве службы, а только лишь как приложение. Для этого нужно запустить исполняемый файл winmgmt.exe, который находится в базовом каталоге WMI, \%systemroot%system32wbem.

    Установить SDK могут только члены группы Administrators. Процедура установки проста. Для начала необходимо запустить файл wmisdk.exe. Следует указать папку, в которой будут размещены файлы (по умолчанию C:program fileswmi). Затем нужно выбрать устанавливаемые компоненты. По умолчанию инсталлируются все компоненты, за исключением SNMP. На последней странице мастера нужно щелкнуть на кнопке Finish. Перезапускать компьютер не требуется. После того как все нужные файлы будут скопированы программой инсталляции в выбранную папку, в пункте меню Programs появится новая программная группа - WMI SDK.

    После завершения установки нужно щелкнуть на кнопке Start, выбрать Programs и WMI SDK и открыть WMI CIM Studio. Когда CIM Studio предложит соединиться с пространством имен и покажет выбранное по умолчанию значение rootcimv2, следует щелкнуть на кнопке OK. Обладателю учетной записи Administrator следует вновь щелкнуть OK, чтобы зарегистрироваться в качестве текущего пользователя. Всем, кто вошел в систему под иным именем, необходимо зарегистрироваться в качестве Administrator.

    Затем нужно выбрать на данном компьютере объект управления: диск C. Точное имя этого компонента в CIM или WMI неизвестно, поэтому, вместо того чтобы просматривать сотни классов в списках CMI Studio, я щелкнула на кнопке Find (пиктограмма «бинокль» в верхней части левой панели). В диалоговом окне Search for Class, показанном на Экране 1, я ввела ключевое слово, которое, на мой взгляд, с большой вероятностью должно присутствовать в имени класса для диска C, и нажала Go!. Поскольку мне нужно было найти именованный раздел и я знала, что в операционных системах Windows такие разделы называются логическими дисками или логическими накопителями, я вела поиск по ключевому слову logical. Можно провести поиск по слову disk, но в таком случае придется просматривать гораздо больше результатов.

    Обнаруженные классы показаны на Экране 1. Я выбрала Win32_Logical-Disk и щелкнула OK, после чего на экране появилось окно, показанное на Экране 2. Почему не CIM_Logical-Disk? Как уже упоминалось, Win32 - префикс для любых объектов, управляемых WMI. Если выбрать CIM_LogicalDisk и попытаться отобразить экземпляры, то не будет получено никакой конкретной информации об имеющихся логических дисках - каждому логическому устройству будет соответствовать запись Win32_Logi-calDisk. В правой панели показаны свойства класса Win32_LogicalDisk. Следует обратить внимание, что значения свойств пусты, так как мы рассматриваем класс, а не конкретный экземпляр класса. Чтобы вывести на экран экземпляры класса Win32_LogicalDisk, нужно щелкнуть на кнопке Instances в верхней части правой панели (четвертая кнопка справа).

    В результате на экран выводится окно, в правой панели которого перечислены все экземпляры логических дисков на данной машине, в том числе сетевые логические накопители. Я щелкнула на экземпляре с ID устройства «C:». На закладках правой панели окна, показанного на Экране 3, отображаются свойства и методы выбранного экземпляра. Имя выбранного логического диска показано в верхней строке правой панели.

    Изменить свойства или применить методы можно с помощью сценария. Чтобы получить информацию о свойствах, нужно выбрать класс Win32_LogicalDisk или экземпляр Win32_LogicalDisk.DeviceID=«C:» и щелкнуть на кнопке Help.

    Составление сценария

    Теперь, когда мы познакомились с классом Win32_LogicalDisk и его свойствами, я хочу показать, как использовать эту информацию в сценарии. Если на компьютере установлен комплект ресурсов Microsoft Windows 2000 Resource Kit, то файл listfreespace.vbs по умолчанию находится в папке program files esource kit. Данный сценарий опрашивает все объекты класса Win32_LogicalDisk, извлекая значения двух свойств: DeviceID (буква накопителя) и FreeSpace (число свободных байтов на диске). Если на компьютере дисковод обозначен буквой A, а привод компакт-дисков - буквой D, то результат работы listfreespace.vbs будет выглядеть примерно так:

    A: not available C: 8,243,381,248 bytes D: not available G: 4,776,943,616 bytes

    Ту же информацию можно получить с помощью более короткого сценария getfree.vbs (см. Листинг 1). Сценарий снабжен подробными комментариями. При вызове сценария пользователь указывает букву диска, и getfree.vbs сообщает объем свободного пространства и тип файловой системы данного устройства. Например, если ввести с клавиатуры моего ноутбука

    Getfree.vbs c:

    появится сообщение, приведенное на Экране 4.

    Экран 4. Сообщение getfree.vbs.

    Итак, я рассказала о том, что такое WMI и как найти на компьютере управляемые объекты. Конечно, прочитав статью, нельзя немедленно превратиться в специалиста по сценариям WMI, но теперь вы знаете, какие компоненты следует использовать при написании сценариев и где их отыскать.

    КРИСТА АНДЕРСОН - независимый автор и консультант, редактор журнала Windows NT Magazine. Ее последняя книга - «Mastering Local Area Networks». С ней можно связаться по адресу: [email protected] .

    WMI для NT 4.0 и Windows 95

    Интерфейс Windows Management Instrumentation (WMI) 1.5 уже инсталлирован на компьютерах с Windows 2000 и Windows 98 как часть ядра операционной системы, но он не относится к числу встроенных компонентов Windows NT 4.0 и Windows 95. Чтобы выполнить сценарии на системе NT 4.0 или Windows 95, нужно установить WMI, даже если эти сценарии предназначены для управления удаленными компьютерами.

    WMI 1.5 для NT 4.0 Service Pack 4 (SP4) и более поздних версий и Windows 95 можно загрузить по адресу: http://www.msdn.microsoft.com/downloads/ sdks/wmi/download.asp . Если планируется установить WMI как на системах NT 4.0, так и Windows 95, можно загрузить версию, совместимую с обеими платформами. Установив программы, нужно запустить wmicore.exe, чтобы начать работу небольшого мастера, который предлагает принять условия лицензионного соглашения End User License Agreement (EULA) и подтвердить, что вам известно о невозможности удаления однажды установленного WMI. Программа инсталляции копирует несколько файлов на компьютер пользователя. После перезагрузки на системе появится новая папка (\%systemroot%systemwbem на машинах Windows 95). Функциональность WMI зависит от платформы: например, в Windows 95 не предусмотрена регистрация событий, поэтому через WMI нельзя обратиться к журналам событий Windows 95, тогда как на компьютере Windows 2000 или NT 4.0 это возможно.



    Понравилась статья? Поделиться с друзьями: