WMI фильтры групповых политики позволяют создать дополнительные условия, в которых определяются параметры компьютеров, к которым нужно нужно применять настройки GPO. Например, с помощью WMI фильтра вы можете применить политику к компьютерам с определенным версией Windows; с определенными настройками; характеристиками оборудования (размеру RAM, HDD); на которых установлена определенная программа; к компьютерам в указанной IP подсети и т.д.
WMI (Windows Management Instrumentation) фильтр в GPO представляет собой запрос на языке WQL (WMI Query Language). Доменный компьютер перед тем, как применить конкретный объект GPO, выполняет такой WMI запрос и опрашивает свое состояние. Если состояние компьютера соответствует условиям выполняются, такая групповая политика будет применена к компьютеру.
Как создать и привязать WMI фильтр к GPO
Для управления WMI фильтрами используется консоль управления доменными групповыми политиками .
- Откройте консоль
gpmc.msc
- Перейдите в раздел WMI Filters и создайте новый фильтр
- Укажите название фильтра и описание (не обязательно)
- Нажмите Add. Выберите пространство имен WMI (в большинстве случаев используется root\CIMv2). Укажите код WMI запроса в следующем формате:
Select * from <WMI Class> WHERE <Property> = <Value>
Например, следующий WMI запрос можно использовать, чтобы применить GPO только к компьютерам с Windows 10 и 11:Select * from Win32_OperatingSystem where Version like "10.%" and ProductType="1"
- Теперь WMI фильтр можно привязать к GPO. Например, вы хотите, чтоб политика установки принтеров применялась только к компьютерам с Windows 10 и 11. В разделе WMI Filtering групповой политики выберите WMI фильтр, который вы создали.
- Обновите настройки GPO на клиентах. Теперь политика будет применяться только к компьютерам, которые удовлетворяют условиям WMI фильтра. Для анализа примененных политики можно использовать команду gpresult /r. Если политика действует на клиента, но не применяется из-за WMI фильтра, такая политика в отчете gpresult будет иметь статус
Filtering: Denied (WMI Filter)
и указано имя WMI фильтра.
Примеры WMI запросов для фильтров GPO
Рассмотрим часто используемые примеры WMI запросов для фильтров GPO.
В зависимости от типа ОС:
- ProductType=1 – рабочая станция (клиентская версия Windows)
- ProductType=2 – контроллер домена AD
- ProductType=3 – серверная ОС (Windows Server)
В зависимости от версии Windows:
Version like "X.X%"
- Windows Server 2016/2019/2022 и Windows 10/11 — 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%
С помощью логических операторов AND и OR можно комбинировать несколько условий в WMI запросе. Например, чтобы применить GPO только к серверам с Windows Server 2019:
select * from Win32_OperatingSystem WHERE Caption LIKE "%2019%" AND Version LIKE "10.%" AND ( ProductType = "2" or ProductType = "3")
Компьютеры с 64 битными версиями Windows 10:
select * from Win32_OperatingSystem WHERE Version like "10.%" AND ProductType="1" AND OSArchitecture = "64-bit"
Компьютеры с определенным билдом Windows 11 (например, 23H2, билд 22631):
select * from Win32_OperatingSystem WHERE Caption like "%Windows 11%" AND ProductType="1" AND BuildNumber = "22631"
Применить политику только к виртуальным машинам VMWare:
SELECT Model FROM Win32_ComputerSystem WHERE Model LIKE "%VMware%"
Применить политику только к ноутбукам:
select * from Win32_ComputerSystem where PCSystemType="2"
Только к десктопным компьютерам (рабочим станциям):
select * from Win32_ComputerSystem where PCSystemType="1" or PCSystemType="3"
WMI фильтр для выбора компьютеров, чьи имена начинаются на “msk-pc
SELECT Name FROM Win32_ComputerSystem WHERE Name LIKE "msk-pc%"
Применить политику только к компьютерам в определенных IP подсетях (WMI фильтр для привязки GPO к IP подсети):
Select * FROM Win32_IP4RouteTable WHERE (Mask='255.255.255.255' AND (Destination Like '192.168.1.%' OR Destination Like '192.168.2.%'))
Компьютеры с более чем 4 ГБ RAM:
Select * from WIN32_ComputerSystem where TotalPhysicalMemory >= 4200000000
Компьютеры, на которых установлен архиватор 7ZIP:
Select * From Win32_Product where Name like "%7-Zip %"
На которых установлен Internet Explorer (по умолчанию IE удален в современных версиях Windows):
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 фильтры перед применением в GPO можно протестировать на целевых компьютерах. Это позволит понять, будет или не будет политика с таким WMI запросов применяться на определенных компьютерах. Для просмотра всех доступных WMI классов на компьютере выполните PowerShell команду:
Get-WmiObject -List
Вывести доступные атрибуты и значения WMI класса Win32_OperatingSystem:
Get-WMIObject Win32_OperatingSystem| Select *
Чтобы проверить ваш WMI запроса на компьютере и понять, соответствует ли компьютер данному запросу или нет, укажите его код в параметре -query. Например, такой WMI запрос проверяет, установлен ли на компьютере Microsoft Office:
Get-WmiObject -query 'Select * From Win32_Product where Name like "%Office 16 Click-to-Run%"'
Если такая команда возвращает в ответ список атрибутов, значит компьютер соотвествует вашему запросу и GPO с таким WMI фильтром будет применена. Если команда get-wmiobject ничего не вернула — компьютер не соответствует запросу.
Get-CimInstance
.WMI фильтры GPO позволяют создать динамические правила, в которых определяются характеристики компьютеров, к которым нужно применить групповые политики.