WMI过滤器通过实时读取本地系统信息(如Version、ProductType)动态控制GPO是否生效,仅当所有绑定过滤器返回True时GPO才应用;必须用完整字符串比较(如Version >= "10.0.19044"),禁用数值比较或截断写法。
要让组策略只对特定操作系统版本生效,核心是用 wmi 过滤器做设备级判断。它不改变 gpo 链接位置,也不依赖安全组,而是靠实时读取本地系统信息(比如 windows 版本号、产品类型)来决定“这个策略要不要起作用”。配置本身不难,但细节错一点就完全不生效。
确认目标系统的完整版本号
不能凭印象写 Version = "10.0" 或 Version > 10.0 ——WMI 不支持数值比较,且 Win32_OperatingSystem.Version 返回的是完整字符串,例如 "10.0.19045" 或 "10.0.22621"。
在目标计算机上运行这条命令查真实值:
Get-WmiObject Win32_OperatingSystem | Select Version, Caption, ProductType常用 ProductType 含义:
- 1:客户端系统(Windows 10/11)
- 2:域控制器
- 3:成员服务器(如 Windows Server 2019)
编写可靠的 WQL 查询语句
查询必须基于 Win32_OperatingSystem 类,使用字符串匹配,推荐用 LIKE 或 >=(字符串比较也有效)。
示例(仅对 Windows 10 21H2 及更新版客户端生效):
其他常见写法:
- Windows 11(22H2)及以上:Version >= "10.0.22621"
- Windows Server 2022:Version >= "10.0.20348" AND ProductType = "3"
- 跳过 Windows 10 LTSC:Version LIKE "10.0.1904%" AND NOT Caption LIKE "%LTSC%"(Caption 字段区分大小写)
在 GPMC 中创建并绑定过滤器
打开 gpmc.msc,按顺序操作:
- 右键域节点下的 WMI Filters → 新建,命名如 Win10-21H2+
- 点 添加,粘贴上面验证过的 WQL 查询,保存
- 找到目标 GPO → 右键 → 编辑,切换到 范围 选项卡
- 在 WMI Filtering 下拉框中选中刚建好的过滤器 → 点 是 确认绑定
注意:一个 GPO 可绑多个过滤器,但所有过滤器都必须返回 True,该 GPO 才会应用。
验证是否真正生效
别只看 GPMC 界面——实际效果要到目标机器上验证:
- 在目标机运行:gpresult /h report.html,打开报告查看 “Applied Group Policy Objects” 列表是否包含该 GPO
- 对比一台旧系统(如 20H2),同样执行 gpresult,确认该 GPO 不出现
- 如果没生效,先检查 WMI 查询语法、版本号是否抄错、ProductType 是否匹配;再确认 GPO 已链接到对应 OU 且未被阻止继承


















