WMI过滤器用于补充设备级判断,仅对计算机策略生效;创建需在GPMC中新建并输入合法WQL语句;绑定后所有过滤器必须返回True才应用GPO。
wmi过滤器不是用来替代安全组筛选的,而是补充设备级判断——它让gpo只在满足硬件、系统或配置条件的计算机上生效,且仅对计算机策略起作用。
创建WMI过滤器的基本步骤
打开组策略管理控制台(GPMC.msc)→ 展开域树 → 右键“WMI Filters” → 选择“新建” → 输入名称和描述 → 点击“添加”进入查询编辑界面 → 填入合法WQL语句 → 保存。
注意:一个GPO可绑定多个WMI过滤器,但所有过滤器都必须返回True,该GPO才会应用到目标计算机。
写对WQL查询的关键细节
WMI过滤器本质是一条WQL语句,不是SQL,有严格限制:
- 只能查本地WMI命名空间类,如Win32_OperatingSystem、Win32_ComputerSystem;不能跨命名空间JOIN,也不能用自定义或远程类
- 字符串比较区分大小写,推荐用LIKE配合通配符,例如
Caption LIKE "%Windows 10%"比精确匹配更稳定 - 版本号必须按完整格式比对,
Version LIKE "10.0.19045%"或Version >= "10.0.19045"有效,Version = "10.0"或Version > 10.0无效 - 避免使用性能差或权限受限的类,如Win32_NetworkAdapterConfiguration容易导致策略处理卡顿甚至失败
常见设备条件的可靠写法
不同场景需用对应WMI类和属性,以下为经验证的常用组合:
-
限定Windows 10 22H2及以上:
SELECT * FROM Win32_OperatingSystem WHERE Version >= "10.0.19045" -
识别ARM64设备:
SELECT * FROM Win32_ComputerSystem WHERE SystemType = "ARM64-based PC" -
区分笔记本与台式机:用
PCSystemTypeEx = 2(便携式)或= 1(台式机),旧版PCSystemType已弃用 -
判断是否为域成员工作站:
DomainRole = 3(独立工作站不匹配,域成员服务器是4) -
检查Secure Boot是否启用:
SELECT * FROM Win32_BootConfiguration WHERE Name = "BOOTMGR"不够直接,应改用Win32_Firmware中SecureBoot字段(需Win10 1703+)
绑定并验证GPO与WMI过滤器
选中目标GPO → 切换到“WMI Filtering”选项卡 → 勾选已建好的过滤器 → 确认应用。
验证是否生效:
- 在目标计算机上以管理员身份运行
gpupdate /force刷新策略 - 执行
gpresult /h report.html生成HTML报告,查看“Applied Group Policy Objects”列表是否包含该GPO - 在不满足条件的设备上做同样操作,确认该GPO未出现在应用列表中

















