我有三台机器:ASAAD-0 MSN-LEED01 MSN-LEED02
在组策略中,我有一个名为 LEED 的 WMI 过滤器,其内容如下:
SELECT * FROM Win32_ComputerSystem WHERE (Name != "MSN-LEED01" OR Name != "MSN-LEED02")
包含具有此过滤器的 GPO 的 OU 正在应用于所有三台计算机。
在 ASAAD-0 上运行 gpresult /h 时,我可以看到此过滤器的计算结果为 True,这是预期的。然而,在两台 LEED 机器上,它仍然计算结果为 True,而它似乎应该计算结果为 False。
我尝试了几种不同的方法来验证 Win32_ComputerSystem.Name 是否是正确的值。
如果我跳转到 MSN-LEED02 并运行 Powershell 命令,Get-WmiObject Win32_ComputerSystem
它会返回几个字段,并且名称字段确实是 MSN-LEED02。
但是,如果我打开 wbemtest,进入枚举类,找到 Win32_ComputerSystem 并查看其属性,则名称值为空。
我最后尝试的是使用这第三方工具从上面测试过滤器。MSN-LEED01 和 MSN-LEED02 都返回 true,尽管例如 (Name != MSN-LEED01) 应该为 false,因为 name 似乎等于 MSN-LEED01。
有人知道我对过滤器做错了什么吗?
答案1
将查询中的“OR”替换为“AND”:
SELECT * FROM Win32_ComputerSystem WHERE (Name != "MSN-LEED01" AND Name != "MSN-LEED02")
但是,您只需在组策略管理中的“委派”选项卡中添加计算机(或包含这些计算机的 AD 安全组),然后拒绝“应用组策略”(如果您想阻止这些计算机应用组策略的“用户”设置,也拒绝“读取”),它比 WMI 过滤器更高效,也更易于维护。