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

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

Для чего используются 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).

Создать WMI фильтр групповых политик

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

WMI запрос имеет следующий формат:

Select * from <WMI Class> WHERE <Property> = <Value>

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

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

код запроса wmi фильтра GPO для windows 10

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

класс msWMI-Som в домене

После создания WMI фильтра его можно привязать к конкретному объекту GPO. Найдите нужную политику в консоли GPMC и на вкладке Scope в выпадающем меню секции WMI Filtering выберите созданный ранее WMI фильтр. В этом примере я хочу, чтобы политика автоматического назначения принтеров применялась только к компьютерам с Windows 10.

привязать wmi фильтр к групповой политике

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

gpresult фильтрация по 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 *

Get-WMIObject

Для тестирования 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

get-wmiobject query - тестирование wmi запросов в powershell

Это значит, что IE 11 установлен на компьютере и GPO с таким WMI фильтром будет применяться к этому компьютеру.

Итак, мы разобрались как использовать WMI фильтры для применения групповых политик только компьютерам, попадающим под условия запроса. Нужно учитывать наличие WMI фильтров при анализе причин, из-за которых не применяется политика на компьютере.


Предыдущая статья Следующая статья


Комментариев: 52 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)