WMI 脚本失败并出现错误 0x80041017

Posted

技术标签:

【中文标题】WMI 脚本失败并出现错误 0x80041017【英文标题】:WMI script failing with an error 0x80041017 【发布时间】:2013-07-24 15:05:16 【问题描述】:

我有一个非常简单的 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 中注册什么的?

【问题讨论】:

您的脚本本身没有任何问题。使用 WBEMTest 和/或 WMIDiag 检查 WMI。 试试rebuilding the WMI repository 【参考方案1】:

我认为这可能与您获取 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 废话...

【讨论】:

以上是关于WMI 脚本失败并出现错误 0x80041017的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2008 注册升级时报错

loadrunner 进行压力测试时,提示我 初始化失败通信错误

错误:安装脚本退出并出现错误:命令“gcc”失败,退出状态为 1

WMI 脚本 Windows 8 错误

MSBuild Copy 失败并出现奇怪的错误消息

对本地 .py 脚本的 Ajax 调用工作正常,直到我在顶部添加一个简单的导入,它失败并出现 500 错误