===== Чиним WMI ===== Если в нашем домене GPO применяются с использованием фильтра WMI - иногда можно обнаружить ошибку при их выполнении. Моделирование с использованием инструмента //Результаты групповой политики// покажет такую ошибку: Неправильный фильтр WMI ;#; {{:ad:incorrect_wmi_filter.jpg?600|}} ;#; Это говорящий признак того, что на машине, к которой не применяется нужная нам политика - есть проблемы с работой WMI. Убедиться в этом можно следующим образом: открыть консоль управления компьютером и перейти на вкладку настройки WMI, как показано на скриншоте, а затем войти в свойства данного элемента. ;#; {{:ad:wmi_compmgmt.jpg?600|}} ;#; На проблемной машине мы скорее всего обнаружим ошибки классов WMI, в то время как на нормально работающем компьютере - увидим их содержание. Проблемная машина: ;#; {{:ad:wmi_troubles_comp_example.jpg?600|}} ;#; Нормально работающая машина: ;#; {{:ad:wmi_working_comp_example.jpg?600|}} ;#; === WMI soft reset === 1. В первую очередь проверим целостность компонентов WMI. winmgmt /verifyrepository 2. Если команда рапортует о каких-либо проблемах - мы можем попробовать мягкий сброс WMI следующей командой, выполнив последующую перезагрузку службы //Инструментарий управления Windows//: Winmgmt /salvagerepository net stop Winmgmt net start Winmgmt :!: Иногда обе команды возвращают одно и то же: //База данных WMI согласована//. В этом случае переходим к п.3 и пробуем исправлять другими методами. 3. Если описанный выше способ не помог - можно попробовать следующий cmd-скрипт: 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 sc config winmgmt start= auto net start winmgmt for /f %s in ('dir /b *.mof ^| findstr /V /I "uninstall.mof"') do mofcomp %s for /f %s in ('dir /b *.mfl ^| findstr /V /I "uninstall.mfl"') do mofcomp %s В случае, если мы работаем в 64-х битной системе - скрипт необходимо выполнить и для папки //%windir%\SysWOW64\wbem//. sc config winmgmt start= disabled net stop winmgmt cd %windir%\SysWOW64\wbem for /f %s in ('dir /b *.dll') do regsvr32 /s %s wmiprvse /regserver sc config winmgmt start= auto net start winmgmt for /f %s in ('dir /b *.mof ^| findstr /V /I "uninstall.mof"') do mofcomp %s for /f %s in ('dir /b *.mfl ^| findstr /V /I "uninstall.mfl"') do mofcomp %s :!: Если по каким-либо причинам он не отрабатывает через cmd-файл - можно выполнить каждую команду по отдельности. :!: После выполнения скрипта необходимо перезагрузиться и проверить что с WMI через //compmgmt.msc//. === WMI hard reset === Если софт-ресет WMI нам не помог - переходим к hard reset. :!: ВНИМАНИЕ: hard reset может приводить к потенциальным проблемам, т.к. WMI здесь сбрасывается полностью, до состояния чистой установки //Windows//. 1. Пробуем выполнить команду и перезагрузить службу: Winmgmt /resetrepository net stop Winmgmt net start Winmgmt 2. Если и это не помогло, выполняем скрипт: net stop winmgmt cd %windir%\system32\wbem winmgmt /resetrepository 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 ^| findstr /V /I "uninstall.mof"') do mofcomp %s for /f %s in ('dir /b *.mfl ^| findstr /V /I "uninstall.mfl"') do mofcomp %s sc config winmgmt start= auto net start winmgmt wmiprvse /regserver Для 64-х битной системы необходимо также перекомпилировать mof-файлы в папке: //%windir%\sysWOW64\wbem//. После выполнения сприпта снова перезагружаемся и проверяем состояние WMI. {{tag>ActiveDirectory Microsoft Windows GPO WMI}}