четверг, 11 июля 2013 г.

Восстановление WMI базы

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

Проблемы с WMI могут проявляться по разному:
- косвенно можно определить по логам (ошибки обработки WMI запросов). Может появляться сообщение о том, что не найдено пространство имен или что-то в этом же духе
- при работе различных утилит, работающих с WMI (командлеты powershell, такие как get-wmiobject; winmgmt)
- ошибки group policy, которые "завязаны" на WMI (фильтры для политик, подключение сетевых дисков, принтеров и проч.)

Первым делом, нужно проверить действительно ли проблема с WMI. Для этого достаточно сделать запрос к WMI, например, запустив powershell.exe и выполнив в нем команду get-wmiobject Win32_OperatingSystem

Если выдается ошибка, то приступаем к восстановлению. Создадим bat фай с содержимым:
sc config winmgmt start= disabled
net stop winmgmt /y
%systemdrive%
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 /s /b *.mof *.mfl') do mofcomp %%s

Запускаем его и перезагружаемся.

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

Комментариев нет: