2011年07月25日 23:31:57 frankggh 阅读数 4696
WMI是OS的一个基础组件,很多MS软件包括一些第三方工具都是用WMI作为数据存储。好处是性能安全兼顾,坏处自然就是WMI坏了就麻烦了。客户机上最常见的就是 WMI repository 损坏,补丁无法安装。例如:
SCCM Client 机器上 execmgr.log 和 rebootCoordinator.log 中出现大量的
Failed to instantiate Updates UI Server {2D023958-73D0-4542-8AD6-9A507364F70E} with error 8000401a
典型的 WMI损坏问题,相关的信息可参考以下链接
http://social.technet.microsoft.com/forums/en-US/configmgrsum/thread/471d1211-5dbe-481f-aa85-2690b8089070/
http://trevorsullivan.net/2009/11/06/wmi-repository-corruption-sccm-client-fix/
WMI 损坏是无疑了,如何修复是个技术活。
-
标准工具 WMIdiag.vbs http://www.microsoft.com/download/en/details.aspx?id=7684 下载的是 exe文件,双击运行会解压出 vbs 脚本。 这个脚本本身有很长的说明部分,而且运行后,在生成的log中又详细记录了如何使用的详细信息,虽然参数繁多,但是因为说明得很详细,就不细说了。
- wmidiag.vbs 是最好的工具,但是用起来确实挺复杂,而且耗时。个人建议在有问题的server上用这个工具,毕竟server 比较重要。 客户机就不必如此客气了,直接重建 WMI repository 或许是最快的方法:
a. 以下操作之前先停止 WMI 服务,net stop winmgmt 其它一些服务可能依赖 WMI,也会提示会被停止。
b. 要说重建,要稍微提一下 mof 和mfl, C:\windows\system32\wbem 中的 mof 和 mfl 是建立WMI repository 的模板文件,只要这些模板文件没有丢失,就可以重建一个新的 (空的) WMI repository。 如果 MOF,MFL文件已经丢失了,要么从其它相同的机器上copy,要么用以下命令,从OS安装盘中恢复
rundll32.exe setupapi,InstallHinfSection WBEM 132 %windir%\inf\wbemoc.inf ----- 注意:这个命令需要 OS CD,或者安装源文件位置。
c. Win2003 (无论哪个SP level) 和 XP SP1中,系统是不会自动重建 WMI repository 的。
rundll32 wbemupgd, CheckWMISetup ----------- 上面一个是检测,下面一个是修复
rundll32 wbemupgd, RepairWMISetup
d. XP SP2中引入了 auto recovery的概念。在WMI repository 损坏时, OS 会自动编译那些C:\windows\system32\wbem中有 pragma autorecover 预处理指令的MOF文件,来重建WMI repository。 这个预处理指令的作用就是将该MOF文件加入自动恢复时需要编译的MOF文件列表,这个列表存储在注册表 HKLM\SOFTWARE\Microsoft\WBEM\CIMOM\autorecover mofs
这样,实际恢复就简单很多,
net stop winmgmt
move c:\windows\system32\wbem\Repository c:\windows\system32\wbem\Repository.old
net start winmgmt
重启即可,重启时OS就会自动恢复。如果重要的机器不能重启,可以使用 rundll32 wbemupgd, UpgradeRepository -----注意 rundll32 命令,区分大小写,空格也不能写错Vista 中有了一些改进,既然不用就跳过。 Win7 更进一步,做了很多改进:
---- 缺省是 autorecover,但有注册表键值可以控制它是否auto recover HKLM\SOFTWARE\Microsoft\WBEM\CIMOM\ 下的 AutoRestoreEnabled, 1是enable,0 是disable。
---- winmgmt /resetRepository,还有对应的 winmgmt /VerifyRepository
http://msdn.microsoft.com/en-us/library/aa392749(v=vs.85).aspx
http://technet.microsoft.com/en-us/library/ff406382.aspx
http://technet.microsoft.com/en-us/library/ff404265.aspx
http://msdn.microsoft.com/en-us/library/aa392389(v=vs.85).aspx
http://blogs.technet.com/b/askperf/archive/2009/04/13/wmi-rebuilding-the-wmi-repository.aspx
http://blogs.msdn.com/b/wmi/archive/2006/05/12/596266.aspx
http://technet.microsoft.com/en-us/library/ee692772.aspx
http://msdn.microsoft.com/en-us/library/ee309381(v=vs.85).aspx