WMI命名空间root \ cimv2在Win2k上不可用?

时间:2010-09-09 16:08:05

标签: windows vbscript wmi windows-2000

我正在尝试在Win2k SP4上运行以下VBScript代码:

strComputer = "."    
Set oWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

它在XP和Win7上运行没有问题,但在这个2k的盒子上我收到以下错误:

C:\test_wmi.vbs(3, 1) (null): 0x8004100E

错误描述为:找不到指定的命名空间。

当我在root上查询名称空间时,使用以下代码:

strComputer = "."

Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root")
Set colNameSpaces = objSwbemServices.InstancesOf("__NAMESPACE")

For Each objNameSpace In colNameSpaces
 Wscript.Echo objNameSpace.Name
Next

我明白了:

DEFAULT
SECURITY
WMI
directory
aspnet

据我所知,CIMV2名称空间应该存在。任何想法???

谢谢!

yorch。

3 个答案:

答案 0 :(得分:1)

是的,应该在那里。有一个名为wmidiag.vbs的工具可以帮助您诊断WMI问题,但在使用它之前,请尝试观看一些解释如何使用它的“网络广播”(herehere)< / p>

答案 1 :(得分:1)

最后,对我有用的是重建WMI存储库。这就是我所做的:

  • 停止WMI服务(net stop winmgmt)
  • 转到%windows%/ system32 / wbem(在我的win2k中,winnt,在XP上将是Windows)
  • 重命名或删除存储库目录
  • 再次启动WMI服务(net start winmgmt)

此外,此方法可能有助于(将WMI重新安装到注册表中):

winmgmt /clearadap
winmgmt /kill
winmgmt /unregserver
winmgmt /regserver
winmgmt /resyncperf

感谢Uros的帮助,网络广播和工具都非常有用。

答案 2 :(得分:1)

我使用的是Windows Server 2003,Service Pack 2,yorch的解决方案对我不起作用。最后我找到了这个页面,并按照Server 2003的说明进行了操作:

http://www.djordjepejic.com/kb68/index.php/article/winmgmt-could-not-initialize-the-core-parts-solved-even/

  

对于Windows Server 2003   使用以下命令检测并修复损坏的WMI存储库:

     

rundll32 wbemupgd, RepairWMISetup