J3qx

information archive

Перестроение WMI

Posted by j3qx на Декабрь 1, 2012

Перестроение WMI

Задался целью настройки SCOM – на один компьютер ни в какую не устанавливается агент.

Свойства WMI подсказали, что с ним что-то не так.

И тут на помощь пришел Duncan McAlynn:

net stop winmgmt
c:
cd %systemroot%\system32\wbem
rd /S /Q repository
regsvr32 /s %systemroot%\system32\scecli.dll
regsvr32 /s %systemroot%\system32\userenv.dll
mofcomp cimwin32.mof
mofcomp cimwin32.mfl
mofcomp rsop.mof
mofcomp rsop.mfl
for /f %%s in ('dir /b /s *.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
echo DONE reboot
pause

Помогло.

 

Вариант скрипта 2

Mister Nobody says:

Наша поддержка пользуется чуть расширенной версией скрипта
@ECHO OFF

NET STOP SharedAccess

NET STOP winmgmt

CD %WINDIR%\System32\Wbem\Repository
DEL /F /Q /S %WINDIR%\System32\Wbem\Repository\*.*
CD %WINDIR%\system32\wbem

REGSVR32 /s %WINDIR%\system32\scecli.dll
REGSVR32 /s %WINDIR%\system32\userenv.dll

MOFCOMP cimwin32.mof
MOFCOMP cimwin32.mfl
MOFCOMP rsop.mof
MOFCOMP rsop.mfl
FOR /f %%s IN (‘DIR /b /s *.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
MOFCOMP exwmi.mof
MOFCOMP -n:root\cimv2\applications\exchange wbemcons.mof
MOFCOMP -n:root\cimv2\applications\exchange smtpcons.mof
MOFCOMP exmgmt.mof

rundll32 wbemupgd, UpgradeRepository

NET STOP Cryptsvc
DEL /F /Q /S %WINDIR%\System32\catroot2\*.*
DEL /F /Q C:\WINDOWS\security\logs\*.log
NET START Cryptsvc

msiexec /unregister
msiexec /regserver
REGSVR32 /s msi.dll

NET START winmgmt
NET START SharedAccess

 

Вариант скрипта 3

Ремонт WMI

repair wmiУверен что каждый хоть раз сталкивался с проблемами с WMI.

  • Не устанавливается SCCM или SCOM агент.
  • Не работает сторонее ПО по инвентаризации.
  • Ошибки в системных журналах связанные с источником WMI.
  • При запуске собственного скрипта и пр. :)

Для начала небольшая теоретическая часть посвященная архитектуре WMI.

Не удивляйтесь имеет собственную архитектуру, которая включает в себя три основных компонента:

Провайдеры WMI и управляемые объекты.

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

Инфраструктура WMI.

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

Подписчики WMI (клиенты).

Чаще всего это сценарий или приложение запрашивающее системную информацию, например Microsoft System Center Configuration Manager или его собрат SCOM.

Практика

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

Лечение.

В большинстве случаев “лечение” ошибок, методика действительна для Windows XP, выполняется тремя методами:

  1. Остановка службы и удаление папки Repository
  2. Более правильный и более гуманный метод представленный ниже.
  3. Если первые два метода не помогли то приходится прибегнуть к утилите WMIDIAG.

Шаг первый – восстановление wmi:
Если у вас Windowx XP SP2 то вводим команду

rundll32 wbemupgd, UpgradeRepository

и проверяем результат в файле журнала %windir%/system32/wbem/logs/setup.log

Rundll32 wbemupgd, CheckWMISetup
Rundll32 wbemupgd, RepairWMISetup

Шаг второй – Регистрация компонент:

cd /d %windir%/system32/wbem
for %i in (*.dll) do RegSvr32 -s %i
for %i in (*.exe) do %i /RegServer

Шаг третий – синхронизация WMI-счетчиков производительности:

winmgmt /clearadap
winmgmt /resyncperf

Финальный шаг – перекомпиляция mof-файлов:

cd /d %windir%/system32/wbem
for /r %i in (*.mof *.mfl) do mofcomp %i

Скажу сразу что автоматизация данного процесса доступна в виде скрипта, но использовать ее стоит только после полной уверенности что без этого не обойтись.

Копируем представленный ниже скрипт и запускаем его через psexec на удаленном ПК.

@echo off
cd /d %windir%/system32/wbem
net stop winmgmt /y
winmgmt /kill
winmgmt /unregserver
winmgmt /regserver
winmgmt /resyncperf
if exist Rep_bak rd Rep_bak /s /q
rename Repository Rep_bak
for %i in (*.dll) do RegSvr32 -s %i
for %i in (*.mof,*.mfl) do Mofcomp %i
net start winmgmt

Более “жестокий вариант”.

%windir%\system32\wbem\winmgmt /clearadap 
%windir%\system32\wbem\winmgmt /kill 
%windir%\system32\wbem\winmgmt /unregserver 
%windir%\system32\wbem\winmgmt /reserver 
%windir%\system32\wbem\winmgmt /resyncperf 
net stop winmgmt /y 
if exist %windir%\system32\wbem\repository.old rmdir /s /q 
%windir%\system32\wbem\repository.old 
rename %windir%\system32\wbem\repository 
%windir%\system32\wbem\repository.old 
regsvr32 /s %systemroot%\system32\scecli.dll 
regsvr32 /s %systemroot%\system32\userenv.dll 
mofcomp %windir%\system32\wbem\cimwin32.mof 
mofcomp %windir%\system32\wbem\cimwin32.mfl 
mofcomp %windir%\system32\wbem\rsop.mof 
mofcomp %windir%\system32\wbem\rsop.mfl 
for /f %s in ('dir /b /s %windir%\system32\wbem\*.dll') do regsvr32 /s %s 
for /f %s in ('dir /b /s %windir%\system32\wbem\*.mof') do mofcomp %s 
for /f %s in ('dir /b %windir%\system32\wbem\*.mfl') do mofcomp %s 
net start winmgmt 
%windir%\system32\wbem\wmiprvse /regserver 

© http://vmind.ru/2012/08/28/perestroenie-wmi/
© http://blog.wadmin.ru/2010/04/rebuild-wmi/
Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

 
%d такие блоггеры, как: