Сайт о телевидении

Сайт о телевидении

» » Wmi команды. Устранение неполадок в WMI

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 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 это возможно.

Здравствуйте, уважаемые читатели! Некоторые из вас возможно задавались вопросом как удалить программу на удаленном компьютере . Рядовому пользователю это скорей всего не нужно, а системному администратору какой-нибудь локальной сети это может понадобиться.

Для удаления и установки ПО на удаленных компьютерах существует множество различных решений и программных средств. В этой статье мы рассмотрим решение данного вопроса на основе встроенных средств 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 и ее компонентах. Наличие проблем в подсистеме 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 сталкиваются с неполадками в работе интерфейса управления Windows (WMI). Что касается проблем с WMI, о которых пользователи сообщали группе Microsoft Global Escalation Services, то выяснилось, что главная их причина связана с базовыми отношениями зависимости - например, в параметрах DCOM, реестре или файловой системе. В подобных ситуациях мы часто используем утилиту WMI Diagnosis (WMIDiag), которую вы также можете применять для диагностики базовых отношений зависимости, вызвавших проблемы с WMI, и даже для получения предлагаемых способов исправления ошибки. Утилиту WMIDiag можно загрузить по ссылке go.microsoft.com/fwlink/? LinkId=62562.

Архитектура WMI

Для иллюстрации применения WMIDiag рассмотрим вкратце архитектуру WMI. Классы WMI можно использовать в сценариях или приложениях для автоматизации административных задач на удаленных компьютерах, что особенно удобно при управлении большим числом систем. Архитектура WMI включает три основных компонента.

    Провайдеры WMI и управляемые объекты. Провайдеры WMI, представленные COM-объектами, контролируют другие объекты - логические или физические жесткие диски, операционную систему, процессы и службы.

    Инфраструктура WMI. Инфраструктура включает службу WMI (winmgmt.exe) и репозиторий WMI, организованный по пространствам имен, таким как rootdefault или rootcimv2. Служба WMI играет роль посредника между провайдерами WMI и репозиторием WMI. Большую часть данных WMI получает от провайдера динамически, по запросу клиента.

    Подписчики WMI (клиенты). Подписчиком может быть сценарий или корпоративное приложение - например, Microsoft System Center Operations Manager. Подписчики могут запрашивать у WMI системную информацию, подписываться на события (например, при изменении действующей в системе политики) либо запускать удаленные задачи управления. Более подробную информацию о WMI можно получить по ссылке msdn.microsoft.com/en-us/library/
    aa394582(VS.85).aspx.

Что такое WMIDiag?

Утилита WMIDiag написана на языке VBScript и запускается из командной строки или двойным щелчком на файле WMIDiag.exe. При запуске без аргументов из командной строки WMIDiag проверяет десятки параметров, элементы реестра, состояние служб, доступность кода, подозрительные отключения и записи в журнале событий, относящихся к DCOM.

WMIDiag может диагностировать следующие проблемы:

    Сценарии не выполняются или «виснут»;

    Корпоративные приложения управления системами - например, Microsoft Systems Management Server (SMS), System Center Operations Manager или HP OpenView, не выполняют обычные задания;

    Инвентаризация программного и аппаратного обеспечения не обеспечивает сбора необходимой информации;

    Не устанавливаются должным образом приложения или пакеты обновлений;

    Не разворачиваются объекты групповой политики (GPO);

    События ошибок DCOM, регистрируемые в журнале событий приложений, указывают на ошибки приложений.

Неполадки с WMI

Недавно я работал с одним пользователем, у которого возникли проблемы с построением отчетов инвентаризации программного обеспечения по нескольким клиентам Windows XP SP2. Такие отчеты - важный инструмент обеспечения соответствия требованиям лицензирования и обновления программ на предприятии. Приложения сбора данных инвентаризации, такие как SMS или System Center Configuration Manager 2007, подключаются к WMI для извлечения экземпляров класса Win32_Service с целью определения служб, работающих в системе. Поэтому мы начали с того, что запустили в системе пользователя встроенный инструмент WMI - утилиту WBEMTest (для этого надо выбрать «Пуск», «Выполнить» и ввести wbemtest), а затем подключились к корневому пространству имен cimv2 и выполнили следующий запрос:

Select * From Win32_Service

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

Как мы видим, описание ошибки, т.е. «сбой загрузки провайдера», зашифровано. Как упоминалось выше, провайдеры представлены COM-объектами. COM-объекты, не зарегистрированные как следует, не могут быть загружены, что и приводит к ошибке. Остается узнать, какой из провайдеров не зарегистрирован должным образом. Для ответа на этот вопрос мы воспользовались утилитой WMIDiag.

WMIDiag в деле

В ходе выполнения WMIDiag создаются три файла, по умолчанию помещаемые в каталог%TEMP%:

    Файл.log с подробной информацией о деятельности утилиты WMIDiag;

    Файл.txt, содержащий сводный отчет с предупреждениями и ошибками, достойными рассмотрения;

    Файл.csv, содержащий статистику, которую можно использовать для анализа тенденций проблем с WMI во времени.

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

На экране видно, что WMIDiag предлагает варианты решения проблемы. В данном случае таким решением стала регистрация провайдера при помощи команды, предлагаемой WMIDiag (c: egsvr32.exe tscfgwmi.dll). Заметим, что после выдачи запроса загружаются все провайдеры для данного класса и производных классов. В нашем случае базовым запрашиваемым классом был Win32_Service, а одним из производных классов - Win32_TerminalService. Это означает, что загружается и провайдер WMI служб терминалов. Регистрация провайдера, обнаруженного утилитой WMIDiag, решила проблему пользователя.

Другая ситуация, с которой мне недавно пришлось столкнуться, была связана с применением GPO. Контроллеры домена в среде клиента не выполняли обработку GPO. В результате каждые пять минут в журнале событий приложений регистрировались ошибки Userenv: «Не удалось подключиться к домену xxxx.com. (Тайм-аут). Обработка групповой политики прекращена».

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

Результат запуска WMIDiag в системе клиента для диагностики ошибок GPO показан на экране 3. Как и в предыдущем примере, утилита не только указала причину проблемы, но и предложила возможные варианты ее решения.

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

Заметим, что WMIDiag можно использовать для анализа работоспособности WMI на сотнях серверов одновременно. Для этого следует запустить WMIDiag с параметром SMS, подавляющим окна сообщений, обычно открываемые при интерактивном выполнении. Чтобы назначить удаленный файл общего доступа для хранения всех файлов, создаваемых WMIDiag, следует запустить WMIDiag с параметром LogFilePath и указать путь к файлу.

Нужна ли вам помощь службы технической поддержки Microsoft в диагностике данных, выводимых утилитой WMIDiag? Мы, конечно, не гарантируем ответа на любой вопрос, но вы можете отправить данные, выводимые WMIDiag, по адресу [email protected] (в письме коротко опишите проблему), и наша группа технической поддержки постарается помочь найти решение. Ваши предложения или вопросы по использованию WMIDiag можно отправлять мне либо посетите страницу www.microsoft.com/technet/scriptcenter/topics/help/wmidiag.mspx .

Майкл Моралес ([email protected]) - старший инженер службы поддержки Microsoft Global Escalation Services. Специализируется на проблемах отладки и производительности Windows