Group-Policy

組策略中的 WMI 篩選器評估不正確

  • June 11, 2020

我有三台機器: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,它會返回一些欄位,而 Name 欄位確實是 MSN-LEED02。

電源外殼

但是,如果我打開 wbemtest,進入 Enum Classes,找到 Win32_ComputerSystem 並查看它的屬性,Name 值為 null。

wbemtest

我嘗試的最後一件事是使用這個第三方工具從上面測試過濾器。MSN-LEED01 和 MSN-LEED02 都返回 true,例如,(Name != MSN-LEED01) 應該為 false,因為名稱似乎等於 MSN-LEED01。

有人知道我在過濾器上做錯了什麼嗎?

將查詢中的“OR”替換為“AND”:

SELECT * FROM Win32_ComputerSystem WHERE (Name != "MSN-LEED01" AND Name != "MSN-LEED02")

但是,您可以在組策略管理的“委派”選項卡中添加電腦(或包含這些電腦的 AD 安全組),然後拒絕“應用組策略”,(如果要阻止,也可以拒絕“讀取”這些電腦應用組策略的“使用者”設置),它比 WMI 過濾器更有效且更易於維護。

引用自:https://serverfault.com/questions/1020943