WMI: Исправление ошибок, восстановление репозитория в Windows

Настроить удаленный доступ по WMI |

Ошибка wmi код 63

WMI: Исправление ошибок, восстановление репозитория в Windows

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

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

Диагностика проблем с WMI

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

Get-Service Winmgmt | Select DisplayName, Status, ServiceName

Если служба Winmgmt запущена, вы можете проверить работоспособность WMI, обратившись к ней с помощью простого WMI-запроса. Вы можете выполнить wmi запрос из командной строки или из PowerShell. Например, следующая команда выведет список установленных в Windows программ:

wmic product get name, version

Простейшая PowerShell команда для получения информации о версии и билда Windows 10 через WMI может выглядеть так:

Как вы видите, служба WMI ответила на запрос корректно. Если при выполнении такого WMI-запроса Windows возвращает ошибку, скорее всего сервиса WMI работает некорректно, поврежден WMI репозиторий или есть какие-то другие проблемы.

В моем случае, например, при открытии свойств WMI Control в консоли управления компьютером (compmgmt. msc) появлялась надпись:

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

в противном случае появится ошибка:

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

К сожалению, последняя версия WMIDiag 2.2 корректно работает только с версиями до Windows 8.1/Windows Server 2012 R2. На данный момент Microsoft даже удалила ссылку на загрузку WMIDiag из Download Center. Но при желании, этот скрипт можно найти в сети.

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

Исправление WMI репозитория, перерегистрация библиотек, перекомпиляция MOF файлов

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

Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT или WMI repository verification failed), стоит попробовать выполнить “мягкое” исправление ошибок репозитория:

Данная команда выполняет проверку согласованности хранилища WMI и при обнаружении несогласованности перестраивает базу данных WMI.

Перезапустите службу WMI:

net stop Winmgmtnet start Winmgmt

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

sc config winmgmt start= disablednet stop winmgmtcd %windir%\system32\wbemfor /f %s in (‘dir /b *.dll’) do regsvr32 /s %swmiprvse /regserversc config winmgmt start= autonet start winmgmtfor /f %s in (‘dir /b *.mof’) do mofcomp %sfor /f %s in (‘dir /b *.mfl’) do mofcomp %s

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

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

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

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

Следующая команда выполнит сброс базы данных WMI к исходному состоянию (как после чистой установки Windows). Используйте эту команду для выполнения hard reset репозитория WMI, если параметре salvagerepository не исправил проблему:

Если обе команды ( Winmgmt /salvagerepository и Winmgmt /resetrepository ) не восстановили консистентное состояние базы WMI, попробуйте выполнить “жесткое” пересоздание базы WMI вручную таким скриптом:

sc config winmgmt start= disablednet stop winmgmtcd %windir%\system32\wbemwinmgmt /resetrepositorywinmgmt /resyncperfif exist Repos_bakup rd Repos_bakup /s /qrename Repository Repos_bakupregsvr32 /s %systemroot%\system32\scecli. dllregsvr32 /s %systemroot%\system32\userenv. dllfor /f %s in (‘dir /b *.dll’) do regsvr32 /s %sfor /f %s in (‘dir /b *.mof’) do mofcomp %sfor /f %s in (‘dir /b *.mfl’) do mofcomp %ssc config winmgmt start= autonet start winmgmtwmiprvse /regserver

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

Проверьте состояние WMI репозитория. Если ошибки исправлены, команда winmgmt /verifyrepository должна вернуть:

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

Предыдущая статья Следующая статья

Настроить удаленный доступ по WMI

Столкнулся СЃ неожиданными трудностями РїСЂРё удаленных подключениях Рє Windows РїРѕ WMI. Постоянно получал «РћРЁР˜Р‘РљРђ. Описание: Отказано РІ доступе. РљРѕРґ ошибки: 80070005» РџСЂРё этом РІСЃРµ учетные данные, настройки firewall Рё С‚.Рґ. были РЅР° 100% верны. Где-то сразу РІСЃРµ работало, как надо, Р° РіРґРµ-то РЅРё РІ какую РЅРµ получалось удаленно подключиться Рє Windows 10 РїРѕ WMI.

Введение

Для работы по WMI используется свой язык запросов WMI Query Language (WQL), который немного похож на SQL, так как является его разновидностью. Пример работы с WMI можно посмотреть прямо в командной строке Windows:

Вы получите информацию в байтах о доступной оперативной памяти компьютера.

Ошибка WMI 80070005 Отказано в доступе

Запросы по WMI можно делать по сети. Выглядит это примерно следующим образом:

win10-kvm\zerox учетная запись на целевом компьютере в формате домен или имя компьютера и сам пользователь 10.20.1.53 адрес компьютера в виде ip или имени

Очень часто вы можете получить вот такую ошибку при запросе WMI по сети. Далее рассказываю, как ее продиагностировать и исправить.

Разрешение удаленных вызовов по WMI

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

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

Должно получиться в итоге вот так:

В разных версиях Windows 10 изменение типа сети с общедоступной на частную выглядит по-разному. Даже сейчас, проверяя статью, я в двух разных системах вижу 2 разных способа. Пункты меню в Параметрах постоянно меняются. Каждый раз как Коломбо вынужден искать новое расположение старых настроек. Ума не приложу, зачем Microsoft это делает. Вот так меняется тип сети в одной из других версий:

После того, как изменили профиль сети на частный, открывайте командную строку с правами администратора и выполните в ней команду:

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

Что делать в этом случае, вы знаете. Если все прошло успешно, то теперь удаленный вызов WMI завершится удачно:

Заключение

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

Источники:
https://winitpro. ru/index. php/2014/08/12/ustranenie-nepoladok-v-wmi/https://serveradmin. ru/nastroit-udalennyj-dostup-po-wmi/
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: