Управление драйверами принтера

Опубликовано: 24 Апреля, 2023

Драйверы принтеров по-прежнему остаются одной из самых больших проблем в среде терминального сервера. В этой статье я опишу, как можно управлять драйверами принтера таким образом, чтобы решить эту проблему.


Введение


На форумах поддержки вы можете легко увидеть, что одной из самых больших проблем в инфраструктуре сервера терминалов является печать. Очень много вопросов о том, почему пользователи не могут печатать, синие экраны на серверах и так далее. В статье «Может ли стороннее программное обеспечение решить ваши проблемы с печатью на терминальном сервере» я уже подробно описал, почему возникают проблемы, но вот краткое изложение основных причин:



  • Драйверы принтеров написаны не для использования на терминальных серверах;
  • Задания на печать используют большую полосу пропускания
  • Конфликты версий из-за сторонних драйверов
  • Все драйверы принтеров должны быть доступны на всех терминальных серверах.

Поэтому несколько производителей разработали универсальный драйвер принтера. Драйвер Microsoft Fallback, универсальный драйвер Citrix и эквивалентные решения от других поставщиков продуктов SBC можно использовать, если вы используете автоматически созданный метод печати клиента, но их нельзя использовать для сетевых принтеров. Для сетевых принтеров существуют различные программные решения, такие как Uniprint, Thinprint или Provision Print-IT.


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


Родные правила драйвера


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


Не используйте драйверы ядра


В Windows 2003 Microsoft переместила драйверы принтеров из ядра в пользовательский режим. Конечно, это был хороший ход со стороны Microsoft. Если драйвер принтера дает сбой, он больше не будет вызывать синий экран. Хотя существует не так много драйверов ядра, вы обязательно должны проверить, является ли драйвер так называемой версией 3 (режим пользователя). Определенно не устанавливайте и не поддерживайте драйверы версии 2 в вашей среде. Дополнительную информацию о распознавании драйверов версии 2 см. в статье Stefan Vermeulen Surviving Printing.


Используйте только сертифицированные драйверы


Хотя это действительное правило, следует сделать одно большое замечание об этой «подтвержденной истории». Ни Microsoft, ни Citrix официально не сертифицируют принтеры для использования на сервере терминалов. Если производитель использует этот термин, это на самом деле означает, что он протестировал свой драйвер в среде терминального сервера. Это дает вам немного больше уверенности в том, что драйвер будет нормально работать в вашей среде и всегда должен быть правилом для принятия нового принтера (драйвера). Если производитель не упоминает, что у него есть сертифицированный или поддерживаемый драйвер, не применяйте его.


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


Держите количество водителей на низком уровне


Хотя при необходимости следует добавить родные драйверы, постарайтесь ограничить количество драйверов. Это можно сделать, используя один и тот же драйвер для нескольких типов принтеров. Часто изменения в нескольких типах принтеров незначительны, как в серии HP Laserjet 4xxx. Различные серии отлично работают с драйвером предыдущей версии. Например, HP Laserjet 4250 прекрасно работает с драйвером HP Laserjet 4100. Вторая возможность — проверить настоящего производителя принтера. Во многих принтерах используются одни и те же внутренние детали, но внешне они немного отличаются. Например, Ricoh производит принтеры для нескольких поставщиков. Часто эти принтеры используют один и тот же драйвер, потому что базовый драйвер в пакете поставляется компанией Ricoh. Теперь HP также предлагает универсальный драйвер принтера, который поддерживает почти все их принтеры. Это хороший способ ограничить количество драйверов, но обратите внимание, что некоторые пользователи считают, что некоторые параметры не поддерживаются. Тем не менее, это выглядит многообещающим решением, если вы используете много принтеров HP. Дополнительные сведения об универсальном драйвере HP см. в моем обзоре на сайте VanBragt.Net SBC Centre.


Создайте список поддерживаемых принтеров


Если ваш ИТ-отдел не контролирует покупку принтеров, вам обязательно следует создать список поддерживаемых принтеров. В этом списке вы должны упоминать только те принтеры, для которых вы можете гарантировать идеальную работу в вашей среде. Конечно, вы должны обновлять список новыми моделями, которые вы протестировали и оценили. Таким образом, вы также можете уменьшить количество драйверов.


Не разрешать автоматическое создание принтера RDP (при использовании Citrix Presentation Server)


Это правило является одним из самых важных правил. Клиент RDP по умолчанию включен на автоматически созданных клиентских принтерах. Часто администраторы используют этот клиент для подключения к терминальным серверам в целях управления системой. Из-за прав администратора драйверы, которые доступны локально, будут установлены для поддержки автоматически созданного клиента, печатающего функционально в рамках протокола RDP. Отключите поддержку этой функции с помощью политики GPO.


Запретить обычным пользователям добавлять драйверы принтеров


Также запретите пользователям добавлять драйверы принтеров. При использовании Citrix Presentation Server настройте политики Citrix для использования универсального драйвера принтера, если собственный драйвер недоступен (с автоматически созданным клиентским принтером), или убедитесь, что драйверы на сервере печати, клиенте и серверах терминалов точно такие же.


Управление драйверами


Теперь вы выполнили все правила, пришло время управлять драйверами. Как вы, наверное, все знаете, одна из основных концепций TS заключается в том, чтобы ваши серверы были на 100 % идентичными. Таким образом, пользователи всегда испытывают одинаковое поведение при использовании своих приложений. Для драйверов принтеров действует та же концепция. Если драйверы и настройки драйверов одинаковы на всех ваших серверах, пользовательский опыт печати всегда одинаков. У Citrix есть функция репликации в Citrix Management Console, но, исходя из практического опыта, это не самый надежный компонент. Но с помощью простого сценария вы можете организовать это самостоятельно. Все драйверы (информация) хранятся в одной папке и двух ключах реестра, поэтому с помощью простой команды удаления и копирования вы можете реплицировать драйверы и настройки. Необходим пакет драйверов, в котором хранятся все драйверы для вашей среды.


Для этого используйте пустой терминальный сервер (только с операционной системой, возможно, с Citrix Presentation Server), чтобы установить на него все необходимые драйверы.


После установки создайте пакет драйверов, скопировав все файлы из папки %SYSTEMROOT%system32spool и экспортировав ключи реестра [HKLM]SystemCurrentControlSetControlPrintEnvironments и [HKLM]SystemCurrentControlSetControl ПечатьМониторы. Последний шаг — проверить, создал ли драйвер INF-файл в %systemroot%INF. Если это так, необходима копия этих файлов и соответствующих файлов PNF. Это собирает ваш пакет драйверов; сохраните это в общей папке. В документе вы создадите сценарий, который реплицирует драйверы на вашем сервере с этим пакетом драйверов, с кратким объяснением. Запускайте этот скрипт каждый раз при перезагрузке сервера (совет: используйте Планировщик Windows с функцией запуска).


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


Вывод


В этой статье мы впервые пришли к выводу, что на ваш сервер нужны нативные драйвера. Во-вторых, мы создали список правил для драйверов принтеров для простоты внедрения и обслуживания. Последний шаг — убедиться, что все драйверы на всех серверах на 100% идентичны с помощью простого скрипта и пакета драйверов.


Добавка


Сохраните папку %SYSTEMROOT%system32spool в папке \FILSERVERSHAREprinterdriverspool.


Сохраните файлы.INF и.PNF в папке \FILSERVERSHAREprinterdriverINF.


Сохраните экспорт реестра [HKLM]SystemCurrentControlSetControlPrintEnvironments под именемprinterdrivers.reg в папке \FILSERVERSHAREprinterdriverREG.


Сохраните экспорт реестра [HKLM]SystemCurrentControlSetControlPrintMonitors как monitors.reg в \FILSERVERSHAREprinterdriverREG.


Реализуйте следующий сценарий при запуске вашего сервера терминалов.






::———————————————————————————————
:: Скрипт:: PrinterDrivers.CMD
:: Создано: Уилко ван Брагт (http://sbc.vanbragt.net)
::
:: ———————————————————————————————


:: Отключить вход в систему
ИЗМЕНИТЬ ВХОД/ОТКЛЮЧИТЬ


:: УСТАНОВИТЬ ПУТЬ
SET DRIVERPATH=\<<FILSERVER>>SHAREPrinterdriverspool
УСТАНОВИТЕ INFPATH\<<FILSERVER>>SHAREPrinterdriverinf
УСТАНОВИТЕ REGPATH\<<FILSERVER>>SHAREPrinterdriver eg
УСТАНОВИТЬ ИСТОЧНИК\<<FILSERVER>>SHAREPrinterdriver


:: Подождите 30 секунд, чтобы запустить службы диспетчера очереди печати (или включите службы вручную).
%ИСТОЧНИК%SLEEP.EXE 30


:: Остановить диспетчер очереди печати и соответствующие службы
NET STOP «Служба диспетчера печати Citrix» / да
NET STOP «Диспетчер очереди печати» /да


:: Удалить ключи реестра принтера
%SOURCE%REG.EXE УДАЛИТЬ «HKLMSYSTEMCurrentControlSetControlPrintEnvironmentsWindows NT x86Drivers» /FORCE


::Удалить все драйверы принтеров из каталога спула
DEL /s /Q /F %SYSTEMROOT%system32spool


:: Импорт ключей реестра DriverPackage
%SYSTEMROOT%REGEDIT.EXE /S "%REGPATH%PrinterDrivers.REG"
%SYSTEMROOT%REGEDIT.EXE /S "%REGPATH%monitors.REG"


:: Репликация драйверов принтера
%SOURCE%ROBOCOPY.EXE «%DRIVERPATH%» «%systemroot%system32spool» /MIR /R:1 /W:1 /NP
XCOPY «%INFPATH%» «%systemroot%INF» /E /C /I /Q /H /R /Y


:: Запустить службы печати (снова)
NET START «Диспетчер очереди печати»


NET START «Служба диспетчера печати Citrix»


:: Включить вход в систему
ИЗМЕНИТЬ ВХОД/ВКЛЮЧИТЬ


:: Конец сценария
ПЕРЕЙТИ: EOF