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

Запрос WMI для обнаружения отсутствия буквы диска для групповой политики

Я создаю групповую политику для применения к подмножеству пользователей в моей организации. У этого подмножества пользователей нет домашнего каталога, установленного в их объекте Active Directory, тогда как другим пользователям назначен диск I: \.

Мне нужно найти WMI-запрос, который позволит применить GPO конфигурации пользователя к пользователю без диска I: \.

Я легко могу найти обратное:

Select * From Win32_LogicalDisk Where DeviceID = 'I:'

Но если я сделаю WHERE DeviceID <> 'I: \', он вернет C :, D: и другие подключенные диски.

Я подумал о том, чтобы запросить профиль пользователя примерно так:

select RoamingPath from Win32_UserProfile where RoamingPath <> '\\*'

однако это возвращает много результатов для системных учетных записей и профилей локального администратора, а не для вошедшего в систему пользователя.

Я читал, что можно запросить AD напрямую, но приведенная ниже команда выдает ошибку «Недопустимый класс», и я не знаю, применится ли она к зарегистрированному пользователю:

select * from ds_user where ADSIPath = LDAP://OU=CA,DC=global,DC=opus AND DS_homeDirectory=’*’

Я думаю, что в идеале это можно было бы решить, используя Win32_LogicalDisk для подсчета общего количества дисков, второй запрос, чтобы получить количество дисков I: \ (либо 1, либо 0), а затем вычесть второй результат из первого. Если результат = первый запрос, у меня есть моя группа пользователей. Однако пока не удалось найти синтаксис для этого в wmi-фильтре GPO.

Я решил, что сделать это точно так, как я определил в своем вопросе, на самом деле невозможно.

Два лучших варианта, с которыми я столкнулся:

  1. Инвертированные фильтры WMI - Создайте переменную среды для каждого пользователя / ПК, которая дает результат на основе необходимой логики. Затем используйте обычный запрос WMI для фильтрации этой переменной среды.
  2. Запланированный запрос PowerShell - как Яник предложил в комментариях, создайте запрос PowerShell, который фильтрует пользователей на основе требуемой логики (т.е. атрибут homeDrive пуст), а затем добавьте эти учетные записи пользователей в группу, которую затем можно использовать для фильтрации безопасности в GPO. Затем этот PowerShell планируется на сервере локальной сети для повторного запуска.

Я выбрал вариант №2 в своей среде.