[转]重建损坏的Windows Management Instrumentation(WMI)服务
金蝶云社区-lz_xiaohe
lz_xiaohe
1人赞赏了该文章 2,000次浏览 未经作者许可,禁止转载编辑于2015年08月20日 11:39:29


windows系统怎样开启WMI服务 http://jingyan.baidu.com/article/fd8044faebc6a85030137a4e.html
WMI可参考百度百科https://baike.baidu.com/item/WMI/8059238?fr=aladdin

WMI出现至今已经二十多年了,但很多人对它并不熟悉。知道它很好很强大,但不知道它从哪里来,怎么工作,使用范围是什么?现在我跟大家说说我的理解。。。

  WMI有一组API。我们不管使用VBScript、PowerShell脚本还是利用C#的来访问WMI的类库,都是因为WMI向外暴露的一组API。这些API是在系统安装WMI模块的时候安装的,通过他们我们能够能拿到我们想要的类。

  WMI有一个存储库。尽管WMI的多数实例数据都不存储在WMI中,但是WMI确实有一个存储库,用来存放提供程序提供的类信息,或者称为类的蓝图或者Schema。

  WMI有一个Service。WMI总是能够响应用户的访问,那是因为它有一个一直运行的Windows服务,名字叫Winmgmt。停止这个服务,所有对WMI的操作都将没有反应。

  WMI是可扩展的。人人都知道WMI能干很多事情,读取本机硬盘信息、读取远程计算机的用户信息、读取域用户信息等等。基本上,你能想到的获取或者更改资源的操作,它都能干。可谓吃得少,干得多。它为什么这么能干呢?这基于WMI的可扩展性。WMI对资源的操作,不是它自己实现了什么方法,而完全取决于向它注册的提供程序。

  WMI是管理员日常必备的强大工具之一,是脚本伴侣。当然也可以把一个大型系统建立在WMI以及WMI的提供程序之上。

WMI损坏的解决方法,网上罗列两种:
来源:http://www.cnblogs.com/fromchaos/archive/2012/08/29/2661646.html

一、重建损坏的Windows Management Instrumentation(WMI)服务(测试通过)

@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

将这段代码保存成 BAT格式的后 在服务器上运行 即可,参考附件。

二、另外一种方法

1. 单击开始,然后右键单击我的电脑。
2. 在快捷菜单上,单击管理。
3. 在计算机管理控制台的左窗格中,双击“服务和应用程序”。
4. 在“服务和应用程序”下,单击服务。
5. 在计算机管理控制台的右窗格中,找到然后右键单击 Windows Management Instrumentation。
6. 在快捷菜单上,单击停止。
7. 启动 Windows 资源管理器,然后找到 %SystemRoot%\System32\Wbem\Repository 文件夹。
8. 删除 %SystemRoot%\System32\Wbem\Repository 文件夹中的所有文件。

关联参考:https://vip.kingdee.com/article/43091086391443652