WMI修复批处理

您所在的位置:网站首页 wmi启动项异常是怎么回事 WMI修复批处理

WMI修复批处理

2023-10-13 18:42| 来源: 网络整理| 查看: 265

在安全模式下打开,修复,重启,问题解决

@echo on cd /d c:\temp if not exist %windir%\system32\wbem goto TryInstall cd /d %windir%\system32\wbem net stop winmgmt winmgmt /kill if exist Rep_bak rd Rep_bak /s /q rename Repository Rep_bak for %%i in (*.dll) do RegSvr32 -s %%i for %%i in (*.exe) do call :FixSrv %%i for %%i in (*.mof,*.mfl) do Mofcomp %%i net start winmgmt goto End :FixSrv if /I (%1) == (wbemcntl.exe) goto SkipSrv if /I (%1) == (wbemtest.exe) goto SkipSrv if /I (%1) == (mofcomp.exe) goto SkipSrv %1 /RegServer :SkipSrv goto End :TryInstall if not exist wmicore.exe goto End wmicore /s net start winmgmt :End

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 损坏是无疑了,如何修复是个技术活。

 

1. 标准工具  WMIdiag.vbs    http://www.microsoft.com/download/en/details.aspx?id=7684  下载的是 exe文件,双击运行会解压出 vbs 脚本。  这个脚本本身有很长的说明部分,而且运行后,在生成的log中又详细记录了如何使用的详细信息,虽然参数繁多,但是因为说明得很详细,就不细说了。

 

2. 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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3