0

我有以下 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是远程的登录凭据hostquery是要执行的 WQL 查询。

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

SELECT * FROM Win32_LogicalDisk

产生预期的结果,但

SELECT * FROM Win32_LogicalDisk WHERE DriveType=3

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

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

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

4

1 回答 1

0

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

查询字符串被我之前在脚本中所做的一些解析改变了,并且在语法上变得无效,因此出现了无效参数错误。

于 2012-07-05T08:10:06.233 回答