Назад | Перейти на главную страницу

Фильтр WMI в групповой политике оценивает неправильно

У меня три машины: ASAAD-0 MSN-LEED01 MSN-LEED02

В групповой политике у меня есть фильтр WMI под названием LEED, который выглядит следующим образом:

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

Подразделение, содержащее объект групповой политики с этим фильтром, применяется ко всем трем машинам.

На ASAAD-0, когда я запускаю gpresult / h, я вижу, что этот фильтр оценивается как True, чего и следовало ожидать. Однако на обеих машинах LEED он по-прежнему оценивается как True, хотя кажется, что он должен оцениваться как False.

Я пробовал несколько разных способов проверить правильность значения Win32_ComputerSystem.Name.

Если я сяду, скажем, на MSN-LEED02 и выполню команду Powershell Get-WmiObject Win32_ComputerSystem он возвращает несколько полей, и поле Name действительно MSN-LEED02.

Powershell

Однако, если я открою wbemtest, перейду в Enum Classes, найду Win32_ComputerSystem и посмотрю на его свойства, значение Name будет нулевым.

wbemtest

Последнее, что я пробовал, это использовать этот сторонний инструмент для проверки фильтра сверху. И MSN-LEED01, и MSN-LEED02 возвращают истину, хотя, например, (Name! = MSN-LEED01) должно быть ложным, так как имя кажется равным MSN-LEED01.

Кто-нибудь знает, что я делаю не так с фильтром?

Замените «ИЛИ» на «И» в своем запросе:

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

Однако вы можете просто добавить компьютеры (или группу безопасности AD, содержащую эти компьютеры) на вкладке «Делегирование» в управлении групповой политикой и запретить «Применить групповую политику» (и также запретить «Чтение», если вы хотите предотвратить Эти компьютеры применяют параметры «Пользователь» групповой политики), это более эффективно, чем фильтр WMI, и его проще обслуживать.