2011-07-18 21 views
0

を追加するとき、「無効なパラメータ」私は、リモートのWindowsホスト上のWMIクエリを実行するには、次のJavaScriptを持っている:SWbemServices.ExecQuery - WHERE句

var wmiLocator = WScript.CreateObject("WbemScripting.Swbemlocator"); 
var wmiService = wmiLocator.ConnectServer(host, "root\\cimv2", user, pass); 

var items = wmiService.ExecQuery(query); 

for(var e = new Enumerator(items); ! e.atEnd(); e.moveNext()) 
{ 
    WScript.StdOut.Write(e.item().GetObjectText_()); 
} 

userpassは、リモートhostのログイン認証情報です、queryは実行されるWQLクエリです。

これは、WHERE句をWQLクエリに追加するまではすべて正常に動作します。例えば、

SELECT * FROM Win32_LogicalDisk 

は、期待される結果をもたらすが、

SELECT * FROM Win32_LogicalDisk WHERE DriveType=3 

は "無効なパラメータ" エラー(wbemErrInvalidParameter/0x80041008)をもたらすであろう。

WHERE句が使用されている数多くの例が見つかりました。サポートされていない情報は見つかりませんでした。私はここに何かを逃していますか

該当する場合、このスクリプトを実行しているホストはWindows XP Professional SP2です。

+1

クエリ文字列はどのように構築されますか?有効なクエリ文字列が含まれているかどうかを確認するために値をエコーするなど、いくつか試してみることができます。 wbemtest.exeを使用してクエリを実行することもできます。 –

+0

ああ、これは困惑しています...以前に「等号」記号が含まれているため、クエリ文字列が実際には解析されていたため、実際には中断されました。 ありがとうございました!私はこれが閉じられると信じています。 – pdinklag

+0

あなたの解決策を以下の回答として投稿し、それを受け入れたものとしてマークしてください。 – Helen

答えて

0

ヘレンが暗唱したとおり、私は自分自身に答えています。

私は以前スクリプトで行った構文解析によってクエリ文字列が変更され、構文的に無効になったため、無効なパラメータエラーです。