我正在尝试在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。
答案 0 :(得分:1)
是的,应该在那里。有一个名为wmidiag.vbs的工具可以帮助您诊断WMI问题,但在使用它之前,请尝试观看一些解释如何使用它的“网络广播”(here和here)< / p>
答案 1 :(得分:1)
最后,对我有用的是重建WMI存储库。这就是我所做的:
此外,此方法可能有助于(将WMI重新安装到注册表中):
winmgmt /clearadap
winmgmt /kill
winmgmt /unregserver
winmgmt /regserver
winmgmt /resyncperf
感谢Uros的帮助,网络广播和工具都非常有用。
答案 2 :(得分:1)
我使用的是Windows Server 2003,Service Pack 2,yorch的解决方案对我不起作用。最后我找到了这个页面,并按照Server 2003的说明进行了操作:
对于Windows Server 2003 使用以下命令检测并修复损坏的WMI存储库:
rundll32 wbemupgd, RepairWMISetup