Установка принтеров с помощью групповых политик Active Directory
15.11.2022
itpro
Active Directory, Windows 10, Windows 11, Windows Server 2019, Групповые политики
комментарий 41
Вы можете использовать групповые политики (GPO) для установки принтеров на компьютеры пользователей домена Active Directory. В этой статье мы покажем, как автоматически установить принтер пользователю домена при его входе на компьютер.
Рассмотрим следующую конфигурацию: в организации имеется 3 отдела, каждый отдел должен печатать документы на собственном цветном сетевом принтере. Ваша задача настроить автоматическое подключение сетевых принтеров пользователям в зависимости от отдела.
Подключение принтеров доменным пользователям через GPO
Создайте три новые группы безопасности в AD (prn_HPColorSales, prn_HPColorIT, prn_HPColorManagers) и добавьте в нее пользователей отделов (наполнение групп пользователей можно автоматизировать по статье “Динамические группы в AD”). Вы можете создать группы в консоли ADUC, или с помощью командлета New-ADGroup:
New-ADGroup «prnHPColorSales» -path ‘OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru’ -GroupScope Global –PassThru
-
Запустите консоль редактора доменных политик (GPMC.msc), создайте новую политику prnt_AutoConnect и прилинкуйте ее к Organizational Unit (OU), в котором находятся целевые пользователи;
Вы можете опубликовать ваши принтеры в Active Directory. Для этого нужно включить опцию List in the Directory в настройках общего сетевого принтера на вкладке Sharing. В этом случае вы можете не указывать имя принетра вручную, а найти его поиском в AD. Просто нажмите кнопку с тремя точками при выборе принтера, нажмите кнопку Find now и выберите имя сетевого принтера из списка.
При использовании такой групповой политики, новые принтера будут устанавливаться у пользователей, только если на их компьютерах уже установлен соответствующий принтеру драйвер печати (драйвера нужно предварительно установить вручную или интегрировать напрямую в образ Windows).
Если для данного принтера не установлен драйвер, то назначенный через GPO принтер не будет добавлен пользователю. При этом в журнале Event Log -> Application появится событие с Event ID 4096:
Дело в том, что теперь пользователи Windows без прав администратора не могут установить принтера даже не смотря на настройки политики Point and Print Restriction.
Разрешить установку принтеров через GPO без прав администратора
В 2021 году в сервисе Print Spooler была обнаружена серьезная уязвимость (PrintNightmare CVE-2021-34527), для исправления которой Microsoft изменила поведение Windows при установке драйверов печати. Теперь пользователи без прав администратора не могут установить драйвера для принтера (KB5005033), в том числе с помощью параметра GPO Point and Print. Установку драйверов (подписанных и неподписанных) должны выполнять только пользователи с правами администратора.
Однако есть обходное решение, которое позволит обычным пользователям установить драйвера. Для этого нужно изменить вашу GPO установки принтеров.
- Перейдите в раздел Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options и измените значение параметра Devices: Prevent users from installing printer driversнаEnabled;
- Теперь перейдите в Computer Configuration -> Policies -> Administrative Templates -> System -> Driver Installation в параметре Allow non-administrators to install drivers for these device setup classes добавьте классы для устройства типа принтеры <4658ee7e-f050-11d1-b6bd-00c04fa372a7>и <4d36e979-e325-11ce-bfc1-08002be10318>. Это разрешит установку только драйверов печати;
- Перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Printers и включите политику Point and Print Restrictions. Здесь нужно указать список ваших принт-серверов (Users can only point and print to these servers), с которых разрешено устанавливать драйверы печати. В двух оставшихся параметрах выберите Don’t show warning or elevation prompt;
- Добавьте список ваших доверенных прнит-серверов в параметр PackagePointandprint —Approvedservers;
- (Теперь самый важный пункт!!). Чтобы разрешить установку драйвера печати без прав админа нужно временно изменить значение параметра реестра RestrictDriverInstallationToAdministrators на 0.
На отдельном компьютере вы можете изменить этот параметр с помощью команды:
reg add «HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint» /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 0 /f
Чтобы изменить этот параметр реестра на компьютере через GPO, нужно создать правило GPP в разделе Computer (Configuration -> Preferences -> Windows Settings -> Registry. Создайте параметр реестра с настройками:
В новых шаблонах административных ADMX файлов из Microsoft Security Baseline для этого параметра реестра добавлен отдельная опция GPO. Называется она Limits printer driver installation to Administrators (находится в разделе Computer Configuration -> Administrative Templates -> Printers).
Теперь обновите настройки GPO на клиентах (перелогиньтесь или выполните gpupdate /force ) и проверьте, что драйвера с принт-серверов теперь устанавливаются автоматически. В журнале Application должны появится события MsiInstaller вида:
Такая GPO позволит любому пользователю без прав администратора установить сетевые принтера из указанных серверов печати без запроса на повышения прав и уведомлений.
Можно настроить такую схему: при первом входе пользователя на компьютер для пользователя отрабатывает логон скрипт (только один раз), который изменяет значение параметра RestrictDriverInstallationToAdministrators = 1. При следующем запуске этот скрипт проверяет значение RestrictDriverInstallationToAdministrators и, если оно равно 1, меняет его на 0. Таким образом все назначенные пользователю через GPO принтеры будут установлены и значение RestrictDriverInstallationToAdministrators будет автоматически изменено на безопасное.
Обратите внимание, что таким образом можно установить только подписанные драйвера принтеров (Package-aware v3 print drivers). Для таких драйверов в консоли Printer Management (printmanagement.msc) в разделе Drivers должно быть указано Packaged=True. Подробнее об этом здесь https://winitpro.ru/index.php/2016/08/31/update-kb3170455-network-shared-printer-error/
Если вы попытаетесь установить через GPO принтер с неподписанным драйвером, он не будет установлен не смотря на параметр RestrictDriverInstallationToAdministrators:
Добавление и удаление принтера из Active Directory
Служба каталогов Active Directory позволяет указывать принтеры, доступные в каталоге. Существует возможность с помощью групповой политики указать необходимость в записи объектов принтеров в домене, организационном подразделении и т.д.
1. Откройте оснастку Active Directory — Пользователи и компьютеры (Active Directory — Users and Computers) (Пуск > Программы > Администрирование > Active Directory — Пользователи и компьютеры (Start > Programs > Administrative Tools > Active Directory — Users and Computers)).
2. Кликните правой кнопкой на домене и выберите в контекстном меню команду Свойства (Properties).
3. Перескочите на вкладку Групповая политика (Group Policy).
4. Выберите объект Default Domain Policy и кликните на кнопке Изменить (Edit).
5. Раскройте раздел Конфигурация компьютера > Административные шаблоны > Принтеры (Computer Configuration > Administrative Templates > Printers).
6. Дважды кликните на параметре Разрешить публикацию принтеров (Allow printer to be published).
7. Выберите переключатель Включена (Enabled) или Отключена (Disabled) и кликните на кнопке Применить (Apply). Кликните на кнопке OK.
8. Закройте окно Групповая политика (Group Policy) и оснастку Active Directory — Пользователи и компьютеры (Active Directory — Users and Computers).
Даже если эта политика не настроена, пользователи имеют возможность указывать принтеры в Active Directory.
Политика Автоматическая публикация новых принтеров в Active Directory (Automatically publish new printers in Active Directory) позволяет автоматически включать новые принтеры в Active Directory. Если политика отключена, принтеры не будут автоматически публиковаться в БД Active Directory.
Управление принтерами в Active Directory с помощью скриптов для разных версий ОС
В данном топике я подробно расскажу о том, на какие грабли можно наткнуться при автоматической установке, удалении принтеров средствами Active Directory.
Подготовка AD к установке принтеров
- Разделить компьютеры по версии и архитектуре ОС.
- Выделить сетевую папку для хранения драйверов принтеров.
- Скачать и распаковать драйвера принтеров в сетевую папку для всех архитектур, созданную в пункте 2.
Разделяем компьютеры по арxитектуре и версии ОС
- Создаем группы безопасности соответствующие каждой архитектуре и версии ОС, пример: win_x64, win_x32. (Я использовал только 2 группы, так как в моем парке компьютеров существуют либо Windows XP x32, либо Windows 7 x64.).
- Создаем политики с понятными названиями и ограничиваем доступ к этим политикам только для групп безопасности из предыдущего пункта. Пример: «Политика принтеров x32», доступ только для членов группы win_x32.
- Применяем созданные политики ко всем организационным единицам. Самый лучший способ это сделать, по моему мнению — это поместить все OU внутри одной и к ней применить новые политики.
- Делаем компьютеры с архитектурой ОС x32 членами группы win_x32, для других архитектур и версий соответственно.
Сетевая папка
Создается сетевая папка доступная всем пользователям и компьютерам домена. Думаю, этот этап подробно расписывать нет необходимости. Права на папку — только чтение.
Драйвера
- Скачиваем драйвера для всех версий и архитектур.
- Распаковываем их до состояния INF файлов. Грабля №1. Если с этим возникают проблемы, то чаще всего драйвера можно найти в скрытой шаре PRINT$ на машине где установлен принтер. Их можно взять оттуда.
- Копируем эти файлы у нашу сетевую папку. Для удобства разделяем по подпапкам.
Развертывание
- Создание скрипта установки драйвера.
- Создание скрипта подключения пользователя к принтеру.
Скрипт установки драйвера
Этот скрипт помещается в разделе «Конфигурация компьютера» — «Политики» — «Конфигурация Windows» — «Сценарии (запуск/завершение)» — «Автозагрузка»
Создаем файл .BAT такого содержания:
rundll32 printui.dll,PrintUIEntry /ia /m «<Имя принтера 1>» /h «x64» /v «Type 3 — User Mode» /f «<путь к INF файлу драйвера в сетевой папке/x64/>»
rundll32 printui.dll,PrintUIEntry /ia /m «<Имя принтера 2>» /h «x64» /v «Type 3 — User Mode» /f «<путь к INF файлу драйвера в сетевой папке/x64/>»
Грабля №3 Имя принтера можно и нужно узнать в свойствах сервера печати Windows на машине, где драйвер уже установлен. Наверняка есть и в inf файле.
Теперь драйвер принтера будет устанавливаться при загрузке системы автоматически. Если применить его ко всем компьютерам с Windows Vista и новее, то при срабатывании скрипта подключения принтера не выскочит ошибка о недостаточности прав.
Скрипт подключение принтеров
Этот скрипт помещается в разделе «Конфигурация пользователя» — «Политики» — «Конфигурация Windows» — «Сценарии (вход/выход из системы)» — «Вход в систему»
Для обеих архитектур скрипт одинаков.
rem Подключаем сетевой принтер «officeprint» на сервере server
rundll32 printui.dll,PrintUIEntry /in /n \\server\officeprint /q
rem Подключаем сетевой принтер «print» на сервере server1
rundll32 printui.dll,PrintUIEntry /in /n \\server1\print /q
rem Ставим его по умолчанию
rundll32 printui.dll,PrintUIEntry /in /n \\server1\print /y /q
Теперь при входе в систему пользователю автоматически подключатся принтеры и по умолчанию выберется принтер «print» на server1.
Автоматическое удаление принтеров
Все достаточно просто.
Создаем .BAT файл вот с таким содержанием.
REG DELETE «HKEY_CURRENT_USER\Printers\Connections» /f
Затем делаем его скриптом на выход пользователя из системы.
Когда пользователь в следующий раз зайдет в сеть, у него будут только те принтеры, которые установятся политикой.
Полезно при переезде принтера с одного принт-сервера на другой.
Грабля №4 Удаление ветки реестра лучше производить при выходе пользователя из системы, а не при входе перед подключением принтеров.
Для этого требуется перезагрузка службы печати, которая может перезагружаться достаточно долго. Это черевато ситуацией, когда служба еще не запустилась, а скрипт подключения уже сработал и вызвал ошибку.
Добавление принтеров пользователям через групповые политики
Гораздо удобнее управлять принтерами пользователей централизованно, чем вручную устанавливать принтеры каждому пользователю.
Для того чтобы организовать общий доступ к принтерам нужно сначала установить все принтеры в AD и опубликовать их. Если структура компании не слишком территориально разрозненная – рекомендуем сделать для этого один ответственный за публикацию сервер (или группу серверов), а принтеры подключать к нему по сети (благо сейчас даже самые простые принтеры имеют локальную сеть на борту).
Доступ
Публикуем принтер в AD.
Для этого открываем свойства нужного принтера в системе и, переходим на вкладку доступ и ставим галочки напротив пунктов:
Общий доступ к данному принтеру
Прорисовка заданий печати на клиентских компьютерах
Внести в Active Directory
Так же нажимаем кнопку Дополнительные драйверы… и проверяем есть ли драйвера для x86 и x64 систем. Если нет – то добавляем. Это делается для совместимости со всеми рабочими станциями в сети.
GP Принтеры
После установки и публикации принтера нам нужно его добавить всем нужным пользователям.
Для этого откроем нужную групповую политику (или создадим ее для требуемого подразделения)
И перейдем по адресу:
Конфигурация пользователя->Настройка->Параметры панели управления->Принтеры.
В правой колонке нажимаем на свободном месте правой клавишей мыши и выбираем:
Создать->Общий принтер
Новые свойства общего принтера
Теперь в поле Путь к общему ресурсу: вписываем адрес нашего принтера (или нажимаем … и выбираем нужный принтер из AD).
Галочки:
Использовать этот принтер по умолчанию… и … только если отсутствует локальный принтер выставляем в зависимости от потребности.
Поиск принтеров в AD
Если решили найти опубликованный в Active Directory принтер, а не вписывать его вручную.
Общие параметры
Во вкладке Общие параметры ставим галочку напротив:
Выполнять в контексте безопасности вошедшего пользователя (параметры политики пользователя).
Так же можно выбрать Нацеливание на уровень элемента и более гибко выбрать пользователей и группы к которым будет применен данный параметр групповой политики.
И нажимаем ОК.
GP Принтеры
Принтер добавлен. После применения политики он появится у нужных пользователей.
Этой простой политикой мы уменьшили количество действий при добавлении принтера и централизовали раздачу принтеров в Active Directory.
Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности
Быть уверенным в своей IT-инфраструктуре – это быть уверенным в завтрашнем дне.