SWbemServices.ExecQuery - 添加WHERE子句时的“无效参数”

时间:2011-07-18 06:17:18

标签: javascript wmi wmi-query wql wsh

我有以下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_());
}

userpass是远程host的登录凭据,query是要执行的WQL查询。

这一切都正常,直到我向WQL查询添加WHERE子句。例如,

SELECT * FROM Win32_LogicalDisk

产生预期结果,但

SELECT * FROM Win32_LogicalDisk WHERE DriveType=3

将导致“无效参数”错误(wbemErrInvalidParameter / 0x80041008)。

我发现了很多使用WHERE子句的例子,我找不到任何关于它不被支持的信息。我在这里错过了什么吗?

如果它是相关的,执行此脚本的主机是带有SP2的Windows XP Professional。

1 个答案:

答案 0 :(得分:0)

正如海伦所暗示,我自己也在回答这个问题。

查询字符串由我之前在脚本中执行的一些解析更改,并在语法上无效,因此无效参数错误。