修復 WMI repository

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 損壞是無疑了,如何修復是個技術活。

  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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章