WMI脚本失败,错误为0x80041017

时间:2013-07-24 15:05:17

标签: vbscript wmi

我有一个非常简单的WMI测试脚本,我在服务器上本地运行以诊断问题我正在获取WMI的一些数据。

基本上,我在本机上运行的所有 WMI查询(本地)都失败,错误代码为0x80041017

Option Explicit

Dim WmiQuery
WmiQuery = "SELECT * FROM Win32_Processor"

Dim objSWbemLocator
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 

Dim objWMIService
Set objWMIService = objSWbemLocator.ConnectServer("localhost", "root\cimv2")

Dim results
Set results = objWMIService.ExecQuery (WmiQuery)

Dim row
For Each row in results
Next

我甚至没有尝试查看任何属性,但它在第16行失败,这是For Each row in results行。

以下是在控制台中运行它的输出:

c:\test>cscript test.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

c:\test\test.vbs(16, 1) (null): 0x80041017

通过wbemtest运行该查询会给出描述“无效查询”,即使同一查询在其他服务器上运行也是如此。是什么东西没有在WMI中注册?

1 个答案:

答案 0 :(得分:0)

我认为这可能与您获取WMI对象的方式有关。

这个怎么样:

Option Explicit

Dim wmi,col,itm

Set wmi = GetObject("winmgmts:\\.\root\cimv2")
Set col = wmi.ExecQuery("Select * from Win32_Processor")

For Each itm in col
  WScript.Echo itm.Name
Next
Set wmi = Nothing
Set col = Nothing
WScript.Quit

似乎对我有用......不要以为你需要所有WBemLocator guff ...