Использование WMI фильтров в групповых политиках (GPO) в Active Directory
WMI (Windows Management Interface) фильтрация в GPO позволяет создавать условия на кого будет распространятся групповая политика. WMI работает на всех версиях Windows начиная с Windows 2000 и Windows XP.
WMI фильтрация хороший инструмент в руках системного администратора, которая позволит более гибко применять групповые политики. Вот и я столкнулся с задачей, которая легко решалась с помощью WMI фильтра. Рассмотрим ниже примеры применения WMI фильтров.
Создание WMI фильтров
Создать WMI фильтр можно с помощью оснастки управления групповыми политиками (Group Policy Management). Переходим в раздел WMI filters. С помощью контекстного меню выбираем New.
В поле Name задаем имя фильтра, в поле Description вводим описание (не обязательно) и нажимаем Add для добавления запроса по которому и будет работать WMI фильтр.
В поле Namespace оставляем значние по-умолчанию (root\CIMv2), а в поле Query пишем непосредственно запрос фильтра.
После создания фильтра, он появится в разделе WMI Filters и будет доступен для применения в групповых политиках. Чтобы задать WMI фильтр на GPO выбираем его в разделе WMI Filtering.
Таким образом создаются и применяются на групповые политики WMI фильтры. Теперь рассмотрим как можно применять их, примеры запросов которые будут полезны.
Примеры запросов для WMI фильтров
Примеры WMI фильтрации по версиям ОС Windows.
Таблица версий ОС Windows:
Windows Server 2016 и Windows 10 - 10.0% 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%
Типы ОС:
ProductType=1 - Клиент ProductType=2 - Контроллер домена ProductType=3 - Сервер
Применить GPO только на Windows 8:
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "6.2%" AND ProductType = "1"
Применить GPO только на Windows Server 2012 R2:
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "6.3%" AND ( ProductType = "2" OR ProductType = "3" )
Применить GPO только на Windows 7 x64:
select * from Win32_OperatingSystem WHERE Version like "6.1%" AND ProductType="1" AND OSArchitecture = "64-bit"
Применить GPO только на Windows 7 x32:
select * from Win32_OperatingSystem WHERE Version like "6.1%" AND ProductType="1" AND NOT OSArchitecture = "64-bit"
Применить GPO только на x32 ОС:
SELECT AddressWidth FROM Win32_Processor WHERE AddressWidth ='32'
Применить GPO только на х64 ОС:
SELECT AddressWidth FROM Win32_Processor WHERE AddressWidth ='64'
Вот так можно фильтровать применимость GPO на ОС с помощью запросов. С помощью Powershell можно все выше представленные данные посмотреть. Чтобы узнать версию и тип продукта ОС выполним команду:
Get-WMIObject Win32_OperatingSystem | Select Version,ProductType
Чтобы посмотреть все свойства класса Win32_OperatingSystem выполним команду:
Get-WMIObject Win32_OperatingSystem | Select *
Примеры WMI фильтрации по привязке к IP подсети.
Применить GPO только на IP подсеть 10.7.7.*:
Select * FROM Win32_IP4RouteTable WHERE (Mask='255.255.255.255' AND Destination Like '10.7.7.%')
Применить GPO на нексколько IP подсетей 10.7.7.* и 10.7.8.*:
Select * FROM Win32_IP4RouteTable WHERE (Mask='255.255.255.255' AND (Destination Like '10.7.7.%' AND Destination Like '10.7.8.%'))
Вот так можно применять GPO строго на указанную IP подсеть. С помощью Powershell можно посмотреть данные по классу Win32_IP4RouteTable, выполнив команду:
Get-WMIObject WIn32_IP4RouteTable | Select Destination, Mask
По мере необходимости буду дополнять статью, полезными запросами для WMI фильтров.
Один WMI-фильтр вмещает два запроса и больше. Как они отрабатывают в домене, через «И»?
Да
для всей подсети
Вы вообще статью читали ? Там все написано же ! И примеры даже приведены !
Например подсеть 10.7.7.128/25
А Destination — указывать первый адрес подсети, или шлюз, или…?
тут уже как вам нужно, либо полностью к подсети хотите применять GPO либо к одному IP. Все зависит от вашей задачи. Все необходимые данные там есть для ее решения
А если подсеть содержит менее 255 адресов, например 10.7.7.0/25 (10.7.7.0 — 10.7.7.127)? Какой запрос в таком случае использовать?
Выполните команду — Get-WMIObject WIn32_IP4RouteTable | Select Destination, Mask и увидите какую маску нужно использовать в построение запроса.