我有以下 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。