GPP не добавляет принтеры – ошибка 0x80070002

Вопрос или проблема

У нас есть развертывание RDS с двумя RD Session Host. Пользователи распределяются между двумя сеансовыми хостами через специализированный RD Gateway сервер. У пользователей в их RDS-сеансе принтеры подключены через Group Policy Preferences. Политика обновляет подключения принтеров в зависимости от членства пользователя в группе и диапазона IP-адресов, из которого они подключаются.

На одном из хостов принтеры периодически отсутствуют. Политика принтеров работает нормально на другом сеансовом хосте, который настроен идентично неисправному.

Проблема, кажется, связана с обработкой фильтров на уровне элемента, поскольку она затрагивает только принтеры, к которым применяется фильтр “Client IP address” (FilterTerminal). Принтеры, добавленные только на основе членства в группе или без таргетинга на уровне элемента, не затрагиваются. Журнал Group Policy Printers (User.log) показывает следующее, когда принтеры отсутствуют:

2025-01-06 22:40:25.366 [pid=0x68c,tid=0x1140] Добавление дочерних элементов в RSOP.
2025-01-06 22:40:25.366 [pid=0x68c,tid=0x1140] Сессия: 11
2025-01-06 22:40:25.381 [pid=0x68c,tid=0x1140] Неудачный фильтр [FilterTerminal]. [ hr = 0x80070002 "Система не может найти указанный файл." ]
2025-01-06 22:40:25.381 [pid=0x68c,tid=0x1140] Ошибка фильтров. [ hr = 0x80070002 "Система не может найти указанный файл." ]
2025-01-06 22:40:25.381 [pid=0x68c,tid=0x1140] Предварительная обработка фильтра (статус может быть скорректирован). [ hr = 0x80070002 "Система не может найти указанный файл." ]
2025-01-06 22:40:25.381 [pid=0x68c,tid=0x1140] СОБЫТИЕ: Пользовательский элемент предпочтений 'PRINTER-NAME' в объекте групповой политики 'PRINTER-POLICY' не был применен, так как его таргетинг элемент не прошел с кодом ошибки '0x80070002 Система не может найти указанный файл.'%100790273
2025-01-06 22:40:25.381 [pid=0x68c,tid=0x1140] Произошла ошибка, поэтому фильтр запуска один раз был откатан назад. [ hr = 0x80070002 "Система не может найти указанный файл." ]
2025-01-06 22:40:25.381 [pid=0x68c,tid=0x1140] Фильтр не прошел, поэтому фильтр запуска один раз был откатан назад. [ hr = 0x80070002 "Система не может найти указанный файл." ]
2025-01-06 22:40:25.381 [pid=0x68c,tid=0x1140] Ошибка подавлена. [ hr = 0x80070002 "Система не может найти указанный файл." ]

Обычно, когда принтер подключен, мы видим, что расширение вызывает AddPrinterConnectionEx для добавления принтера, однако когда возникает эта проблема, этого не происходит.

Мы проверили следующее:

  • Имя общего доступа для всех принтеров, определенных в политике, правильно.
  • IP-адреса, определенные в фильтрах на уровне элементов, правильные.
  • Конфигурация DNS и IP-адресации на RDS Session Hosts и RD Gateway правильная.
  • Я могу видеть IP клиента, с которого пользователь подключается, в журнале TerminalServices-LocalSessionManager\Operational.
  • Команды SFC/DISM были выполнены, и никаких повреждений не обнаружено.
  • Все RDS Session Hosts и RD Gateway работают под управлением Windows Server 2022 с последними обновлениями.
  • Все общие принтеры в политике настроены на “Обновить”, а не “Создать”. Единственным исключением является запись, которая удаляет все существующие общие принтеры перед добавлением необходимых принтеров.
  • Нет дополнительных ошибок в журналах Microsoft-Windows-GroupPolicy\Operational или Microsoft-Windows-PrintService\Operational.
  • Все необходимые драйверы принтеров установлены, и версия совпадает между сеансовыми хостами и сервером печати.
  • Нет логов или событий, указывающих на то, что защита конечной точки (Defender for Endpoint) блокирует это.
  • Добавление принтеров вручную через Панель управления или через PowerShell (Add-Printer) работает нормально.
  • Записи FilterTerminal в XML политике принтеров содержат все необходимые атрибуты, перечисленные здесь: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/ca4571c2-7906-49fd-bae3-f2e58c098345

Статьи, которые я нашел по этому коду ошибки, в основном связаны с файлами/ярлыками развертывания GPO с проблемным UNC-путем, однако я не могу определить, какая связь между этой ошибкой и фильтром IP-адресов клиента.

Ответ или решение

Проблема с GPP, не добавляющим принтеры и выдающим ошибку 0x80070002, может вызвать замешательство, особенно когда другие аспекты системы работают исправно. Рассмотрим основные моменты и подходы к решению данной ситуации, основываясь на предоставленных данных.

Контекст проблемы:

  1. Среда и структура системы:

    • Развернуто окружение RDS с двумя серверами RD Session Host.
    • Балансировка пользователей осуществляется через выделенный сервер RD Gateway.
    • Принтеры подключаются в сессиях RDS через Group Policy Preferences (GPP) в зависимости от групповой принадлежности пользователя и IP-диапазона, откуда он подключается.
  2. Симптомы проблемы:

    • На одном из серверов RD Session Host принтеры периодически отсутствуют.
    • Другая сессия с теми же настройками конфигурации подобных проблем не испытывает.
    • Ошибки связаны с фильтрацией элементов на уровне (item-level targeting), особенно для "Client IP address" (FilterTerminal).
  3. Журнал ошибок:

    В логах пользовательской политики описаны следующие ошибки:

    Failed filter [FilterTerminal]. [ hr = 0x80070002 "The system cannot find the file specified." ]

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

Возможные причины и решения:

  1. Проблемы с IP-фильтрацией:

    • Актуальность данных: Может быть несоответствие между действительными IP-адресами и теми, что указаны в GPP. Проверьте, нет ли изменений в сетевой конфигурации или изменённых адресов, которые не обновлены в фильтрах.
    • Синхронизация LDAP: Убедитесь, что все изменения в Active Directory, касающиеся групп и IP-диапазонов, правильно реплицируются между контроллерами домена.
  2. Сам файл фильтра:

    • Доступность файла: Проверьте, что файл фильтра не поврежден и доступен обеим машинам. Недопустимость пути или повреждение файлов могут вызывать указанный код ошибки.
    • Уточнение настроек фильтрации: Внимательно просмотрите XML-файл политики для выявления потенциальных ошибок в синтаксисе и отметьте, есть ли различия в настройках между исправным и неисправным хостами.
  3. Конфигурация хостов:

    • Сравнение конфигураций: Хотя оба сессионных хоста должны быть идентичными, проверьте их на наличие тонких различий в настройке сетей, установленных обновлений и настроек безопасности.
  4. Журналы и диагностика:

    • Просмотр других логов: Проверьте связанные логи на дополнительные ошибки, которые могут пролить свет на проблему.
    • Тестирование с PowerShell: Добейтесь аналогичных условий добавления принтеров с помощью скриптов и убедитесь, что проблема именно в GPP, а не в конфигурации сети.

Заключение:

Устранение проблем с GPP требует внимательного анализа всех аспектов настройки системы, начиная от сетевых конфигураций до безопасности и структуры домена. Работая с предоставленным набором данных, важно скрупулезно тестировать каждый потенциальный источник ошибки и вносить корректировки на уровне конфигураций и поставки данных. Основное внимание уделите корректности и актуальности данных фильтрации IP.

Оцените материал
Добавить комментарий

Капча загружается...