Ошибка групповой политики: не удалось добавить принтеры с кодом 0x80070002 “Система не может найти указанный файл.”

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

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

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

Проблема, похоже, связана с обработкой фильтров на уровне элемента, так как она возникает только в отношении принтеров, на которые применен фильтр “IP-адрес клиента” (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 Host и RD Gateway корректна.
  • Я могу увидеть клиентский IP, с которого пользователь подключается, в журнале TerminalServices-LocalSessionManager\Operational.
  • Команды SFC/DISM были выполнены, и повреждений не обнаружено.
  • Все RDS Session Host и 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.

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

В данной ситуации мы видим, что проблема с добавлением принтеров через Group Policy связана с ошибкой 0x80070002, что указывает на невозможность найти указанный файл. Это происходит на одном из двух RD Session Hosts в вашей среде, где пользователи подключаются через RD Gateway. Проблема возникает только с теми принтерами, которые фильтруются по IP адресу клиента с использованием "Client IP address" фильтра (FilterTerminal). Принтеры, добавляемые на основе членства в группах или без таргетирования, работают исправно.

Первоначальная диагностика

  • Проверка конфигурации: Убедитесь, что оба RD Session Hosts имеют идентичную конфигурацию. Может быть полезно сравнить конкретные настройки и файлы конфигурации.

  • Анализ журналов: В результате анализа журналов принтеров User.log видно, что проблема возникает в процессе фильтрации. Убедитесь, что все фильтры настроены корректно и, что скрипты проверки условий функционируют правильно. При необходимости протестируйте процесс фильтрации в отладочном режиме.

Возможные причины проблемы

  1. Ошибки в IP фильтрации: Поскольку ошибка связана с "Client IP address", проверьте правильность диапазонов IP адресов, которые используются в таргетировании. Это может включать диапазоны, соответствующие подключающимся пользователям.

  2. Недостаток файлов или ресурсов: Убедитесь, что все необходимые файлы для корректного применения политики (например, драйверы принтеров, бинарные файлы) доступны. Отсутствие файла может вызывать ошибку типа 0x80070002.

  3. Сетевые проблемы: Исключите возможные проблемы с сетью, которые могут влиять на доступ к серверам, откуда захватывают принтеры.

Рекомендации для решения проблемы

  1. Сопоставьте настройки: Проверьте и при необходимости синхронизируйте все настройки и версии программного обеспечения между двумя RD Session Hosts. Это важно, так как иногда незначительные несоответствия могут привести к подобным проблемам.

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

  3. Пересоздайте проблему: Попробуйте исключить фильтр по IP и проследите, исчезнет ли проблема. Если да, то проблема кроется именно в этом условии.

  4. Трассировка и логгирование: Включите подробное логгирование процессов, чтобы точнее определить момент, когда нарушается выполнение скрипта или фильтра.

  5. Обратитесь к документации: Возможно, есть обновленные документы или патчи, касающиеся вашей версии Windows Server 2022, которые могли бы решить данный баг.

Заключение

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

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

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