2013-07-24 979 views
0

我有一個非常簡單的WMI測試腳本,我在服務器上本地運行診斷問題,我正在獲取WMI某些數據。WMI腳本失敗,出現錯誤0x80041017

實質上,全部我在本機上運行的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中註冊?

+0

什麼本質上錯了你的腳本。用['WBEMTest'](http://technet.microsoft.com/en-us/library/ee692770.aspx)和/或['WMIDiag'](http://blogs.technet.com/b/)檢查WMI askperf /存檔/ 2012/02/03/wmidiag-2-1-IS-here.aspx)。 –

+1

嘗試[重建WMI存儲庫](http://blogs.technet.com/b/askperf/archive/2009/04/13/wmi-rebuilding-the-wmi-repository.aspx) – RRUZ

回答

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廢話...

相關問題