Створення WMI фільтрів для групових політик (GPO) в домені AD

Технологія WMI фільтрів в групових політиках (GPO) дозволяє більш гнучко застосовувати політики на клієнтів, за рахунок використання різних правил, що дозволяють вказувати WMI запити для формування критеріїв вибірки комп'ютерів, на які буде діяти групова політика. Наприклад, за допомогою WMI фільтрів GPO ви можете застосувати політику, призначену на OU, тільки до комп'ютерів з ОС Windows 10 (на інших версіях Windows така політика з фільтром застосовуватися не буде).

зміст:

  • Для чого використовуються WMI фільтри GPO?
  • Як створити новий WMI фільтр і прив'язати його до GPO?
  • Приклади запитів для WMI фільтрів GPO
  • Тестування WMI фільтра за допомогою PowerShell

Для чого використовуються WMI фільтри GPO?

Зазвичай технологія фільтрації групових політик за допомогою WMI (Windows Management Instrumentation) використовується в ситуаціях, коли об'єкти домену (користувачі або комп'ютери) знаходяться в плоскій структурі AD, а не в виділеному OU, або якщо необхідно застосувати політики, в залежності від версії ОС, її параметри мережі, наявності певного встановленого ПО або будь-якому іншому критерії, який можна вибрати за допомогою WMI. При обробці такої групової політики клієнтом, Windows буде перевіряти свої статки на відповідність вказаним WMI запитом на мові WQL (WMI Query Language), і, якщо умови фільтра виконуються, така GPO буде застосована до комп'ютера.

WMI фільтри групових політик вперше з'явилися ще в Windows XP, і доступні аж до останніх версій Windows (Windows Server 2019, 2016, Windows 10, 8.1).

Як створити новий WMI фільтр і прив'язати його до GPO?

Щоб створити новий WMI фільтр, відкрийте консоль управління доменними груповими політиками Group Policy Management (Gpmc.msc) і перейдіть в розділ Forest -> Domains -> winitpro.ru -> WMI Filters. У цій секції містяться всі WMI фільтри домену. Створіть новий WMI фільтр (New).

В полі Name вкажіть ім'я фільтру, в поле Descriptions його опис (не обов'язково). Щоб додати в фільтр WMI запит натисніть на кнопку Add, вкажіть ім'я простору імен WMI (за замовчуванням root \ CIMv2) І вкажіть код WMI запиту.

WMI запит має наступний формат:

Select * from WHERE =

У нашому прикладі ви хочемо створити WMI фільтр, що дозволяє застосувати групову політику тільки на комп'ютери з Windows 10. Код WMI запиту може виглядати так:

Select * from Win32_OperatingSystem where Version like "10.%" and ProductType = "1"

Створені WMI фільтри зберігаються в об'єктах класу msWMI-Som домену Active Directory в розділі DC = ..., CN = System, CN = WMIPolicy, CN = SOM їх можна знайти і відредагувати за допомогою консолі adsiedit.msc.

Після створення WMI фільтра його можна прив'язати до конкретного об'єкта GPO. Знайдіть потрібну політику в консолі GPMC і на вкладці Scope в випадаючому меню секції WMI Filtering виберіть створений раніше WMI фільтр. У цьому прикладі я хочу, щоб політика автоматичного призначення принтерів застосовувалася тільки до комп'ютерів з Windows 10.

Дочекайтеся застосування даної політики на клієнтів, або поновіть її за допомогою gpupdate / force. При аналізі застосованих політик на клієнті потрібно використовувати команду gpresult /r. Якщо політика діє на клієнта, але не застосовується через WMI фільтра, така політика в звіті матиме статус Filtering: Denied (WMI Filter) і вказано ім'я WMI фільтра.

Приклади запитів для WMI фільтрів GPO

Розглянемо різні приклади WMI фільтрів GPO, який найчастіше використовуються.

За допомогою WMI фільтра ви можете вибрати тип ОС:

  • ProductType = 1 - будь-яка кліенская ОС
  • ProductType = 2 - контролер домену AD
  • ProductType = 3 - серверна ОС (Windows Server)

Версії Windows:

  • Windows Server 2016 і Windows 10 - 10.%
  • Windows Server 2012 R2 і Windows 8.1 - 6.3%
  • Windows Server 2012 і Windows 8 - 6.2%
  • Windows Server 2008 R2 і Windows 7 - 6.1%
  • Windows Server 2008 і Windows Vista - 6.0%
  • Windows Server 2003 - 5.2%
  • Windows XP - 5.1%
  • Windows 2000 - 5.0%

Ви можете комбінувати умови вибірки в WMI запиті за допомогою логічних операторів AND і OR. Щоб застосувати політику тільки до серверів з Windows Server 2016, код WMI запиту буде таким:

select * from Win32_OperatingSystem WHERE Version LIKE "10.%" AND (ProductType = "2" or ProductType = "3")

Вибрати 32 бітові версії ОС Windows 8.1:

select * from Win32_OperatingSystem WHERE Version like "6.3%" AND ProductType = "1" AND OSArchitecture = "32-bit"

Застосувати політику тільки до 64-бітовим ОС:

Select * from Win32_Processor where AddressWidth = "64"

Вибрати Windows 10 з певним білдом, наприклад Windows 10 1803:
select Version from Win32_OperatingSystem WHERE Version like "10.0.17134" AND ProductType = "1"

Застосувати політику тільки до віртуальних машин VMWare:

SELECT Model FROM Win32_ComputerSystem WHERE Model = "VMWare Virtual Platform"

Застосувати політику тільки до ноутбуків (див. Статтю wmi запит вибірки ноутбуків в SCCM:

select * from Win32_SystemEnclosure where ChassisTypes = "8" or ChassisTypes = "9" or ChassisTypes = "10" or ChassisTypes = "11" or ChassisTypes = "12" or ChassisTypes = "14" or ChassisTypes = "18" or ChassisTypes = " 21 "

WMI фільтр, який застосується тільки до комп'ютерів, чиї імена починаються на "msk-pc" (наприклад, для блокування підключення USB накопичувачів на цих пристроях):
SELECT Name FROM Win32_ComputerSystem WHERE Name LIKE 'msk-pc%'

Приклад використання WMI фільтра для тонкого націлювання групової політики до IP подсетям описується в статті WMI фільтр для прив'язки GPO до IP підмережі. Наприклад, щоб застосувати політику до клієнтів в декількох IP подсетях, використовуйте фільтр:

Select * FROM Win32_IP4RouteTable WHERE (Mask = '255.255.255.255' AND (Destination Like '192.168.1.%' OR Destination Like '192.168.2.%'))

Застосовувати політику до комп'ютерів, з кількістю оперативної пам'яті більше 1 Гб:

Select * from WIN32_ComputerSystem where TotalPhysicalMemory> = 1073741824

WMI фільтр перевірки наявності на комп'ютері Internet Explorer 11:

SELECT path, filename, extension, version FROM CIM_DataFile WHERE path = "\\ Program Files \\ Internet Explorer \\" AND filename = "iexplore" AND extension = "exe" AND version> "11.0"

Тестування WMI фільтра за допомогою PowerShell

При написанні WMI запитів іноді потрібно отримувати значення різних параметрів на комп'ютері. Ви посліді отримати ці даний за допомогою командлета Get-WMIObject. Наприклад, виведемо атрибути і значення WMI класу Win32_OperatingSystem:

Get-WMIObject Win32_OperatingSystem

SystemDirectory: C: \ WINDOWS \ system32
Organization:
BuildNumber: 17134
RegisteredUser: Windows User
SerialNumber: 00331-10000-00001-AA494
Version: 10.0.17134

Щоб вивести всі доступні параметри класу:

Get-WMIObject Win32_OperatingSystem | Select *

Для тестування WMI фільтрів на комп'ютерах можна використовувати PowerShell. Припустимо, ви написали складний WMI запит і його хочете перевірити (у відповідності комп'ютера даному запиту чи ні). Наприклад, ви створили WMI фільтр перевірки наявності IE 11 на комп'ютері. На цільовому комп'ютері ви можете виконати цей WMI запит за допомогою командлета get-wmiobject:

get-wmiobject -query 'SELECT * FROM CIM_DataFile WHERE path = "\\ Program Files \\ Internet Explorer \\" AND filename = "iexplore" AND extension = "exe" AND version LIKE "11.%"'

Якщо дана команда щось повертає, значить комп'ютер відповідає умовам запиту. Якщо команда get-wmiobject нічого не повернула - комп'ютер не відповідає запиту.
Наприклад, запустивши вказаний запит на комп'ютері з Windows 10 і IE 11, команда поверне:
Compressed: False
Encrypted: False
Size:
Hidden: False
Name: c: \ program files \ internet explorer \ iexplore.exe
Readable: True
System: False
Version: 11.0.17134.1
Writeable: True

Це означає, що IE 11 встановлений на комп'ютері і GPO з таким WMI фільтром буде застосовуватися до цього комп'ютера.

Отже, ми розібралися як використовувати WMI фільтри для застосування групових політик тільки комп'ютерам, які підпадають під умови запиту. Потрібно враховувати наявність WMI фільтрів при аналізі причин, через які не застосовується політика на комп'ютері.