WQL 子查询作为字段值,CIMV2 WMI WQL 查询用于 WMI-Filter
Posted
技术标签:
【中文标题】WQL 子查询作为字段值,CIMV2 WMI WQL 查询用于 WMI-Filter【英文标题】:WQL Subquery as field value, CIMV2 WMI WQL query for WMI-Filter 【发布时间】:2013-05-17 14:07:57 【问题描述】:我需要有关组策略 WMI 过滤器的 WMI 查询的帮助。我正在查询 root\CIMV2 WMI 提供程序中的 win32_group 命名空间。
我正在几台 Windows 计算机(XP-8,服务器 03-12)上搜索本地安全组(如“管理员”)。当查询在计算机上运行时,我希望它将计算机名称注入域的等效字段。
基本 WQL 语句如下所示:
SELECT * FROM win32_group
WHERE Domain="currentComputerName" and Name="Administrators"
我的目标是按照这些思路运行 WQL 语句,但这是一个糟糕的 WQL 语句:
SELECT * FROM win32_group
WHERE Domain=(SELECT Name FROM Win32_ComputerSystem) and Name="Administrators"
重要的是我能够为域注入当前计算机的名称。这些计算机是 Active Directory (AD) 域的一部分。默认情况下,win32_group 将搜索除本地计算机的安全组之外的所有 AD 域组(如果省略域参数)。通过将本地机器名称指定为域,查询的性能会大大提高——这对其目的至关重要。
我在 WBEMTEST 中尝试了一些查询变体,但没有成功。 有人对如何将计算机名称注入 WQL WMI 查询有任何想法吗? 是否有我可以使用的常量,例如命令提示符下的 HOSTNAME?
感谢您的帮助!
【问题讨论】:
【参考方案1】:你用什么语言写这个?或者说清楚,您使用什么编程或脚本语言来运行这些 WMI 查询?
在 PowerShell 中,您可以通过运行以下代码来做到这一点:
Get-WMIObject -Query "SELECT * FROM Win32_Group WHERE Domain='$env:USERDOMAIN' AND Name='Administrators'"
【讨论】:
以上是关于WQL 子查询作为字段值,CIMV2 WMI WQL 查询用于 WMI-Filter的主要内容,如果未能解决你的问题,请参考以下文章