我有以下JavaScript来在远程Windows主机上执行WMI查询:
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查询。
这一切都正常,直到我向WQL查询添加WHERE子句。例如,
SELECT * FROM Win32_LogicalDisk
产生预期结果,但
SELECT * FROM Win32_LogicalDisk WHERE DriveType=3
将导致“无效参数”错误(wbemErrInvalidParameter / 0x80041008)。
我发现了很多使用WHERE子句的例子,我找不到任何关于它不被支持的信息。我在这里错过了什么吗?
如果它是相关的,执行此脚本的主机是带有SP2的Windows XP Professional。
答案 0 :(得分:0)
正如海伦所暗示,我自己也在回答这个问题。
查询字符串由我之前在脚本中执行的一些解析更改,并在语法上无效,因此无效参数错误。