Ошибка WMI 80041002: The object could not be found
Иногда при мониторинге windows-серверов на пустом месте возникает ошибка вида WMI error 80041002: The object could not be found.
Ниже будут изложены несколько способов решения этой проблемы.
Для начала удостоверимся, что 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) могут наблюдаться ошибки вплоть до полной невозможности ее запустить.
В Windows Vista и выше проверить целостность репозитория WMI можно с помощью команды:
Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT), стоит попробовать выполнить «мягкое» восстановление репозитория:
И перезапустить службу wmi:
net start Winmgmt
Если описанная выше команда не помогла, выполняем сброс репозитория на начальное состояние (hard reset) так:
В том случае, если команды 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[/code]Данный скрипт полностью пересоздает хранилище WMI (старый репозитория сохраняется в каталоге Repos_bakup). После окончания работы скрипта компьютер нужно перезагрузить, после чего протестировать работу службы WMI простым запросом.
Источник - http://winitpro.ru/index.php/2014/08/12/ustranenie-nepoladok-v-wmi/