0

サーバー上でローカルに実行している非常に単純な WMI テスト スクリプトを使用して、WMI データを取得している問題を診断しています。

基本的に、このマシンで (ローカルに) 実行したすべての0x80041017WMI クエリはエラー コードで失敗します。

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に何か登録されていないのでしょうか?

4

1 に答える 1

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ガフが必要だとは思わないでください...

于 2013-10-15T16:52:13.443 に答える