リモートWindowsホストでWMIクエリを実行するための次のJavaScriptがあります。
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_());
}
user
およびpass
はリモートのログイン資格情報でありhost
、query
は実行されるWQLクエリです。
これは、WHERE句をWQLクエリに追加するまではすべて正常に機能します。例えば、
SELECT * FROM Win32_LogicalDisk
期待どおりの結果が得られますが、
SELECT * FROM Win32_LogicalDisk WHERE DriveType=3
「無効なパラメータ」エラーが発生します(wbemErrInvalidParameter / 0x80041008)。
WHERE句が使用されている例を数多く見つけましたが、サポートされていないという情報は見つかりません。ここで何かが足りませんか?
関連する場合、このスクリプトを実行するホストは、SP2を搭載したWindowsXPProfessionalです。