0

我正在尝试在 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 命名空间应该在那里。有任何想法吗???

谢谢!

约克

4

3 回答 3

2

我使用的是 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

于 2013-07-08T14:45:39.740 回答
1

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

于 2010-09-09T17:42:51.400 回答
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 的帮助,网络广播和工具都非常有帮助。

于 2010-09-10T13:37:54.497 回答