На операционной системе Windows server 2003 администраторы всегда сталкивались с проблемами печати на клиентских машинах, подключенных по протоколу RDP (Remote Desktop Protocol). В версии 2008 R2 microsoft позоботился об этом и внедрил систему печати Easy Print.
Печать через Terminal Services (устаревшая технология)
При использовании этой службы приходилось устанавливать драйвер на каждый принтер, который использовал пользователь при подключении по удаленному сеансу. Одно дело если у вас на всех компьютерах установлена одна модель принтера или используется один сетевой принтер. В этом случае не возникает проблем. Но как правило такое бывает редко и чаще всего образуются новые места с локальными принтерами разных производителей. В конечном итоге на сервере образуется каша драйверов, которые конфликтуют с собой.
Печать через Easy Print (мой выбор)
Тут всё просто как ни когда. Технология Terminal Services Easy Print использует формат файла Microsoft XML Paper Specification (XPS), который передается на компьютер пользователя и отправляется на печать, используя локальный драйвера принтера.
Настройка на стороне сервера (windows server 2008 R2)
По умолчанию удаленный рабочий стол в windows server 2008 использует компонент Easy Print. Если на стороне клиента эта система не поддерживается, то выполняется поиск подходящего драйвера на сервере. Поэтому особой настройки на сервере нет, просто проверка необходимых условий.
1. Проверяем, что установлен Microsoft XPS. Пуск -> Панель управления -> Устройства и принтеры. Выделяем Microsoft XPS Document Writer и жмем Свойства сервера печати, вклада Драйверы. Лишние можно удалить.
2. Проверяем, что не отключено значение «По умолчанию выбрать основной принтер клиента». Диспетчер сервера -> Конфигурация сервера узла сеансов удаленных рабочих столов. Вкладка Параметры клиента.
3. Для себя установил значение «Перенаправлять только используемый по умолчанию принтер». Заходим в редактор локальной групповой политики. Пуск -> Выполнить -> Gpedit.
Политика «Локальный компьютер» -> Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров
Настройка на стороне клиента (Windows XP Home Edition)
Для клиента необходимо установить всего два компонента:
1. Программа «Подключение к удаленному рабочему столу» версии не ниже 6.1
2. Microsoft .NET Framework версии не ниже 3.0 с пакетом обновления 1
В Операционной системе Windows 7 (если вы устанавливали обновления), то все эти компоненты уже присутствуют. Поэтому рассмотрим настройку на примере Windows XP Home Edition.
Узнать свою версию RDP Client можно через файл mstsc.exe который находится по адресу: C:/Windows/System32/mstsc.exe. Достаточно найти этот файл, нажать на него правой кнопкой мыши и выбрать Свойства.
В моем случае версия оказалась ниже. Идем на сайт Microsoft и скачиваем обновление.
http://www.microsoft.com/ru-ru/download/details.aspx?id=20609
После установки получаем нужный результат.
Версию Microsoft .NET Framework можно проверить здесь: http://support.microsoft.com/kb/318785/ru
Я не стал мучаться, а просто скачал и установил: http://www.microsoft.com/ru-ru/download/details.aspx?id=21
В итоге получаем приятный результат без каких-либо глюков.
Проверено на множестве принтеров. Таких как Canon LBP 6000B; HP LJ 1320, 1300, P1020, 1160; Kyosera FS1040;
В службе терминалов в Windows Server 2008, а именно в подсистеме печати, появилась новая функция, которая может представить пользователям надежную печать из приложений RemoteApp (опубликованных приложений), или из терминального сеанса на локальный принтер на компьютере клиента. Также эта функция помогает стереть отличия для пользователя между локальной печатью и печатью из терминалов.
В Windows Server 2008 драйвер печати Terminal Services Easy Print включен по-умолчанию.
Так что же означает технология «TS Easy Print» на самом деле?
«TS Easy Print работает в качестве прокси для каждого действия печати, который просто перенаправляет все печатные задания на локальный компьютер пользователя без необходимости установки драйверов принтера на сервере терминалов. Эта система обеспечивает ряд преимуществ, таких как возможность перенаправить принтер на клиентскую машину пользователя без перенастройки сервера, а пользователь может прозрачно работать со своим принтером их терминальной сессии»
Требования к клиенту и серверу
На стороне сервера (самого терминала) должен быть установлен Windows Server 2008 /R2, никаких дополнительных драйверов устанавливать не нужно. Драйвер Terminal Services Easy Print включен по умолчанию.
На стороне клиента, который хочет воспользоваться драйвером Easy Print, должны быть установлены Remote Desktop Connection (RDC) 6.1 и Microsoft .NET Framework 3.0 Service Pack 1 (SP1).Оба этих продукта (RDC/RDP client 6.1 и .NET Framework 3.0 SP1), необходимо установить в ОС Windows XP, Windows Server 2003 и Vista. В Windows 7 и Windows 2008, они уже установлены. (Особенности использования rdp 6.1)
Вот некоторые групповые политики, связанные с Easy Print.
«Use Terminal Services Easy Print driver first» (Сначала использовать драйвер TS Easy Print)
Computer ConfigurationAdministrative TemplatesWindows ComponentsTerminal ServicesTerminal ServerPrinter Redirection
«Redirect only the default client printer« (Перенаправлять только клиентский принтер по умолчанию)
Computer ConfigurationAdministrative TemplatesWindows ComponentsTerminal ServicesTerminal ServerPrinter Redirection
Перенаправление принтера
Перенаправление принтера для терминальной службы
Когда клиент открывает сеанс удаленного рабочего стола, сконфигурированный на перенаправление принтеров и LPT-портов, сервер RD Session Host пытается установить каждый принтер для использования в сеансе службы удаленных рабочих столов.
В Windows Server 2003 перенаправление принтеров было головной болью администраторов. Принтер каждого клиента должен был использовать драйвер принтера, знакомый Windows Server 2003, либо администратор должен был установить его вручную. Если ни одно из этих условий не было удовлетворено, перенаправление принтера не работало. В Windows 2008 появилось новое средство — TS Easy Print, — которое смягчает трудности, связанные с перенаправлением принтера для терминальной службы.
TS Easy Print (переименованный в Windows Server 2008 R2 в RD Easy Print) позволяет пользователям свободно печатать из сеанса удаленного рабочего стола на своем принтере клиентского компьютера. TS Easy Print обеспечивает эту функцию, выполняя описанные ниже действия.
- TS Easy Print использует универсальный драйвер принтера. В силу универсальности этот драйвер поддерживает и устаревшие, и новые принтеры без необходимости устанавливать эти драйверы на сервере RD Session Host.
- Драйвер TS Easy Print позволяет пользователям просматривать настройки драйвера локального принтера, поскольку универсальный драйвер выступает в качестве прокси и перенаправляет все вызовы графического интерфейса к действительному драйверу на стороне клиента. В результате получается, что клиент RDC просто запускает графический интерфейс для принтера на стороне клиента поверх удаленного сеанса.
В Windows Server 2008 Terminal Services (а также и в Windows Server 2008 R2 Remote Desktop Services) появились и другие изменения, направленные на улучшение работы пользователей с перенаправлением принтеров.
- Ограничения видимости для перенаправленных принтеров. Если в Windows Server 2003 пользователь открывал несколько сеансов, то все перенаправленные принтеры из всех сеансов были видны в каждом сеансе. Более того, администраторы видели все перенаправленные принтеры для каждого пользователя, подключенного к терминальному серверу. В Windows Server 2008 видимость перенаправленных принтеров ограничена одним сеансом — тем, где они установлены. Теперь службе спулинга не нужно перебирать большое количество перенаправленных принтеров. Это экономит время при просмотре принтеров как в течение сеанса, так и во время первоначального входа в сеанс.
- Используемые по умолчанию принтеры для отдельных сеансов. В Windows Server 2008 используемый по умолчанию принтер пользователя определяется отдельно для каждого сеанса. Это отличается от Windows Server 2003, где у пользователя был один и тот же принтер, используемый по умолчанию, для всех сеансов.
Минимальные требования для клиентских ПК для использования универсального драйвера печати Easy Print таковы:
- Microsoft Windows XP SP3, Microsoft Windows Vista SP1, Microsoft Windows 7
- Средство подключения к удаленному рабочему столу (RDP Client) версии не ниже 6.1 (6.0.6001)
Этот компонент распространяется в составе SP3 для Windows XP и SP1 для Windows Vista - Microsoft .NET Framework 3.0 с пакетом обновления 1 (SP1) (можно использовать Microsoft .NET Framework 3.5)
Распространяется через WSUS, хотя может быть установлен и вручную.
Далее…при подключении клиента к серверу в свойствах RDP клиента на закладке «Локальные ресурсы» должно быть включено перенаправление принтеров.
Обратите также внимание на то, что в свойствах учётной записи пользователя в домене (Закладка «Среда») должны быть включены опции «Подключение принтеров при входе» и «По умолчанию выбрать основной принтер клиента». Это грабли на которые я сам однажды наступил )))
Поведение системы печати служб терминалов Windows Server 2008 по умолчанию предполагает использование драйвера Easy Print для всех клиентских принтеров.
Практика показала что не во всех случаях драйвер Easy Print работает корректно (например при некоторых сценариях съезжают поля при печати документов или вовсе не печатаются некоторые печатные формы из 1С). Для решения этой проблемы на наших терминальных серверах мы изменили настройки системы печати по умолчанию на следующий режим работы: при подключении клиента к серверу служба печати сначала пытается найти родной драйвер для каждого принтера клиента, если находит — использует его, если не находит использует для этого принтера драйвер Easy Print.
На сервер установлены последние версии драйверов основных используемых моделей принтеров. Для более корректного взаимодействия служб печати клиента и сервера рекомендуется использовать одинаковые версии драйверов на сервере и на клиенте.
Разрешение проблем в работе Easy Print на Windows Server 2008 / 2008 R2
В случае проблем с перенаправлением принтеров клиента в терминальную сессию с помощью Easy Print необходимо выполнить нижеописанный ряд проверок:
- Проверяем есть ли на клиентском компьютере требуемая для работы Easy Print версия .NET framework.
- Проверяем на клиенте то, что в свойствах запускаемого RDC клиента (mstsc.exe) включена опция перенаправления принтеров клиента на закладке «Локальные ресурсы». Если вместо клиента мы запускаем настроенный RDP ярлык то открываем его в текстовом редакторе и убеждаемся в том что присутствует опция перенаправления принтеров клиента в виде строки: redirectprinters:i:1
- Проверяем свойства доменной учетной записи пользователя. Как было отмечено ранее, в свойствах учётной записи пользователя в домене (Закладка «Среда») должны быть включены опции «Подключение принтеров при входе» и «По умолчанию выбрать основной принтер клиента».
- Проверяем как сконфигурированы групповые политики влияющие на Easy Print на терминальном сервере. Соответствующий раздел GPO можно найти по пути: Computer Configuration -> Administrative templates -Windows Components -> Remote Desktop Services > Remote Desktop Session Host -> Printer Redirection.
Опция «Use Remote Desktop Easy Print printer driver first» должна быть включена для работы редиректа принтеров с приоритетным использованием драйвера Easy Print или выключена в том случае если вы хотите использовать специально установленные драйвера принтеров на сервере. - Проверяем конфигурацию терминального сервера (оснастка «Remote Desktop Configuration Tool» или tsconfig.msc) на предмет того, что опция редиректа “Windows Printer” не отмечена как отключенная.
- Проверяем что и на клиенте и на сервера запущена служба очереди печати (spooler service). Если служба запущена то проверяем корректность установленных прав на данную службу. Ниже приведен пример того как должны выглядеть правильные настройки безопасности службы очереди печати:
C:>sc sdshow spooler
D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)Если вывод команды отображения настроек безопасности отличен от указанного, например отсутствуют разрешения в дескрипторе безопасности для “AU” (Authenticated User), то устанавливаем необходимые для корректной работы службы права следующей командой
C:> sc sdset spooler D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)
[SC] SetServiceObjectSecurity SUCCESSПосле установки разрешений необходимо перезагрузить компьютер.
- Если подключение клиента производится через RD Gateway проверяем что на сервере RD Gateway выключена опция запрета перенаправления клиентских принтеров.
- Если у клиента большое количество принтеров и они перенаправляются в ограниченном количестве, то стоит обратить внимание на значение ключа реестра MaxPrintersPerSession (REG_DWORD) в ветке HKLMSoftwarePoliciesMicrosoftWindows NTTerminal Services. По умолчанию это значение равно 20 (т.е. не больше 20 принтеров на одну сессию).
Дополнительные ссылки:
- Некорректная печать документов содержащих страницы со смешанной ориентацией.
Article ID: 954744 — Last Review: November 11, 2008 — Revision: 1.0
FIX: Some pages are printed in the incorrect orientation when you use Terminal Services Easy Print to print a document that contains both portrait-oriented pages and landscape-oriented pages
http://support.microsoft.com/kb/954744 - Некорректная печать документов в формате PDF.
Article ID: 970603 — Last Review: June 22, 2009 — Revision: 1.0
The content of a printout is different when you print a PDF document by using Terminal Services Easy Print in a Terminal Services (TS) session in Windows Vista or Windows Server 2008
http://support.microsoft.com/kb/970603 - Некорректная печать полей страниц документов.
Article ID: 959442 — Last Review: December 23, 2008 — Revision: 1.0
The edges of a document are truncated when you try to print the document by using Terminal Services Easy Print from a client computer that is running Windows XP SP3, Windows Vista SP1, or Windows Server 2008
http://support.microsoft.com/kb/959442 - Не работает печать на перенаправленных принтерах если роль терминального сервера установлена на контроллере домена.
Article ID: 968605 — Last Review: March 4, 2009 — Revision: 1.0
Terminal Server Easy Print not printing
http://support.microsoft.com/kb/968605/EN-US
Использованный материал:
Remote Desktop Services (Terminal Services) Team Blog : Using Remote Desktop Easy Print in Windows 7 and Windows Server 2008 R2
Автор статьи не я, позаимствовано у http://lpine.org/
Перенаправление принтеров в терминалах (MS Terminal Services & Remote Desktop Services)
Часть первая, теория
Введение, «Что такое печать в терминальных службах»
1. Как включить
2. Групповые политики
3. Схемы «родной драйвер» и «драйвер подстановки»
4. Схема со Screwdrivers
5. Совместимые с терминалами принтеры
6. Печать через VPN
Часть вторая, решение проблем
1. Типы проблем с печатью в терминалах
2. Проблемы со спулером
3. Драйвер перенаправления
4. Реестр
5. Визард устранения проблем от Майкрософт
6. Если больше ничего не помогает, а печатать принтер должен
7. Печать на медленных каналах
8. Полезные ссылки
Что такое печать в терминальных службах
В 90-х Майкрософт разработал специальную роль для Windows NT 4.0 Server под названием Terminal Server. Роль оказалась популярной и востребованной. Функционал у неё довольно простой: используя специальное ПО mstsc.exe («Подключение к удалённому рабочему столу»), входящее в поставку всех современных версий и редакций клиентских ОС Windows (кроме, пожалуй, Windows Phone), можно подключаться по сети к удалённому серверу и видеть рабочий стол удалённого сервера и управлять им при помощи мышки и клавиатуры как своим собственным.
Особенно полезным оказалось то, что за одним сервером могут работать сотни пользователей через интернет, и у каждого будет на этом сервере свой собственный рабочий стол, а установленное на сервере программное обеспечение и его аппаратные ресурсы разделяются между всеми пользователями.
В отличие от множества других методов транспортировки изображения по сети (VNC, RAdmin, DameWare, Teamviewer, AMMYY Admin и проч.), майкрософтовские терминалы не гонят отсканированную с видеокарты графику, вместо этого они заново отрисовывают все окна на стороне клиента, пользуясь Windows API и проч, передавая по сети только текстовые команды типа «отрисовать такое-то окно такого-то размера с таким-то градиентом». В результате требования по ширине канала для работы очень низкие, и очень высокая скорость работы в стандартных оконных интерфейсах Windows. Впрочем, отличную от окошек графику терминалы гонят также, как и конкуренты, поэтому в терминалах всегда начинаются тормоза при попытке смотреть/редактировать видео и графику.
Протокол, по которому осуществляется передача данных с сервера терминалов на клиентскую рабочую станцию, называется RDP. С выходом OS Windows Server 2008 R2 терминалы переименовали в Microsoft Remote Desktop Services (службы удалённых рабочих столов). Но, как это обычно бывает в Майкрософт, переименование коснулось только поверхностного слоя, глубоко же внутри функции, ключи реестра и проч. по-прежнему называются на Terminal Services. Кстати, иногда бывает даже такое, что при троекратном переименовании продукта на самом поверхностном слое продукт имеет третье название, чуть глубже — второе, более старое, а на самом низком уровне абстрагирования — первое, ещё более старое, именно так обстоит дело с продуктом Forefront TMG, впрочем, не будем отвлекаться.
Существует и более серьёзная версия терминалов, которой занимается компания Citrix. Это решение для крупных компаний, держащих т.н. «фермы» терминальных серверов. За это решение платятся дополнительные деньги сверх уже заплаченных за лицензии на майкрософтовские терминалы, но оно серьёзно облегчает работу, т.к. позволяет централизованно управлять всей фермой, централизованно ставить софт и его настраивать, по-умному раскидывать юзеров между членами «фермы» и т.п. Это решение переименовывалось ещё большее количество раз, начиная от Citrix WinFrame, через MetaFrame, через Citrix Presentation Server, до Citrix XenApp. Протокол для этого решения называется ICA, однако, внутри он является тем же RDP (и потому для XenApp верно многое из того, что верно для RDP и наоборот), исходные коды которого MS лицензирует Цитриксу, без чего XenApp был бы, скорее всего, невозможен и Цитриксу пришлось бы довольствоваться унылым, тормозным и требовательным к ширине канала методом транспортировки десктопа, аналогичным тем, которые используются Radmin, Teamviewer и так далее.
Удалённый десктоп это прекрасно, но рано или поздно юзер сталкивается с тем, что из удалённых приложений ему нужно печатать на принтер. При этом редко кому и когда нужно печатать на принтер, который подключен к удалённому серверу терминалов, который от юзера находится нередко в сотнях и тысячах километров. Печатать нужно на свой, локальный принтер. Для решения этой задачи предлагались в разное время разные методы, все они были не без недостатков, порождающих различные проблемы, которые мы тут и постараемся исчерпывающе описать и предложить соответствующие им решения. Эти методы в разных контекстах называются «printer mapping», «printer redirection», « Easy Printing» а по-русски «перенаправление печати», «сопоставление принтеров» и т.д.
Поскольку аудиторией этого текста являются русскоязычные юзеры и админы, то большинство скринов будет на русском, тем более что в подавляющем большинстве организаций в России терминальные серверы стоят русифицированные, т.к. на них работают пользователи. Среди back-end серверов доля нерусифицированных, конечно, выше чем среди терминальных серверов.
1. Как включить печать в терминальных службах
Очевидное (опытные админы могут пропустить), а именно, как включить перенаправление печати, если оно не включено. На стороне клиента для подключения к серверу терминалов используется программа mstsc.exe, она же «Подключение к удалённому рабочему столу».
Нажать на «параметры», в закладке «локальные ресурсы» убедиться, что стоит галка на «Принтеры». Не требует административных прав.
На стороне сервера нужно запустить tscc.msc (в 2008 и выше tsconfig.msc), на RDP-Tcp нажать правую клавишу мыши, выбрать «Свойства» и в закладке «параметры клиента» убедиться, что НЕ стоит галка на отключить «Сопоставление принтеров». Это действие требует наличия прав администратора на сервере терминалов.
На этом всё, после выполнения этих нехитрых требований по мнению Майкрософт Вы можете печатать из удалённого рабочего стола на свой локально установленный принтер. В этом скриншоте показан удалённый рабочий стол, на который «пробросился» локально установленный принтер Samsung:
Не пробросился? Читаем дальше.
2. Групповые политики
Бывает и такое, что галка на отключить «сопоставление принтеров» на предыдущем скриншоте стоит, а убрать её нельзя, т.к. надпись серая, или, говоря в англоязычной программистской терминологии, этот «checkbox» is «greyed out»:
Такое бывает, если настройками сервера терминалов управляют групповые политики (group policies). Если сервер терминалов является членом домена Windows (он же Active Directory Domain Services), а скорее всего это так, то для управления групповыми политиками нужно быть администратором домена. Для установки соответствующих настроек администратору домена следует на контроллере домена запустить gpmc.msc (если её нет, то dsa.msc) и открыть интерфейс редактирования политики, относящейся к данному терминальному серверу. Если же сервер терминалов не входит в домен и является т.н. «stand-alone» сервером, то на нём также есть локальные групповые политики, которые можно отредактировать при помощи gpedit.msc. Интерфейс в обоих случаях одинаковый, поэтому инструкции подойдут для обоих случаев:
Здесь следует обратить внимание на настройку «не разрешать перенаправление клиентских принтеров», она должна быть в состоянии «не задано» или «отключено».
3. Схемы «родной драйвер» и «драйвер подстановки»
Если настройки по перенаправлению принтеров выполнены как указано выше, то принтер будет перенаправляться ТОЛЬКО в том случае, если на терминальном сервере ТАКЖЕ установлены драйверы на принтер того производителя и той модели, который стоит у юзера локально. В противном случае перенаправляемый принтер на сервере терминалов скорее всего создан не будет, а в журнале событий «Система» появится сообщение от провайдера TermServDevices с кодом 1501 и содержанием, указывающим на то, что на терминальном сервере не установлен соответствующий драйвер.
Поэтому для работы перенаправления печати с сервера терминалов на локальный принтер следует ставить драйвер принтера и на локальном ПК, с которого осуществляется подключение, и на удалённом сервере, на который осуществляется подключение.
Но, такая схема работы имеет очевидные недостатки. Например, туговато приходится администраторам серверов, к которым подключаются сотни людей у многих из которых установлены самые разные принтеры. Такой сервер терминалов рано или поздно превращается в помойку из десятков и сотен драйверов принтеров, которые могут конфликтовать друг с другом и в конце концов вообще угробить всю подсистему печати целиком (о том, как её восстанавливать см. ниже главу про cleanspl). Кроме этого не на все принтеры, особенно принтеры для диапазона SOHO, существуют драйверы для серверных операционных систем, а драйверы для десктопных систем (таких как XP/Vista/7/8) часто не встают на соответствующие им серверные ОС (такие как 2003/2008/2008R2/2012). Ну и в конце концов установка драйверов это муторный процесс, которым администратору заниматься неохота.
Слава Гейтсу, существует и альтернативное решение, а именно, подстановочный драйвер. Дело в том, что несмотря на различия, большинство принтеров имеет много общего и, невероятно, но факт, на них можно печатать с использованием унифицированного PCL или PS драйвера. Подстановку унифицированного драйвера можно задать только с помощью групповых политик, поэтому для установки соответствующих настроек администратору следует на контроллере домена запустить gpmc.msc (если её нет, то dsa.msc) и открыть интерфейс редактирования политики, относящейся к данному терминальному серверу. Если же сервер терминалов не входит в домен и является т.н. «stand-alone» сервером, то на нём также есть локальные групповые политики, которые можно отредактировать при помощи gpedit.msc. Интерфейс в обоих случаях одинаковый, поэтому инструкции подойдут для обоих случаев:
Если включить политику «Поведение сервера терминалов при выборе подходящего драйвера принтера» и в следующем окошке выбрать подстановку PCL и/или PS драйвера, то при подключении к серверу терминалов у юзера будет автоматически создаваться перенаправленный принтер, даже если на сервере соответствующий драйвер не установлен.
Увы, этот метод имеет своим недостатком то, что подстановочный драйвер сработает не для всех принтеров. Для большинства принтеров он работает, но для некоторых нет. Прежде всего этот метод не подойдёт для т.н. host-based драйверов принтеров, т.к. они не являются PCL- или PS- совместимыми. Иногда заставить печатать host-based принтеры всё-таки можно, установив на сервер драйверы для этих моделей, но некоторые модели не имеют драйверов для серверных OS. В ряде случаев эта проблема решаема, см. далее главу о Tricerat Screwdrivers. Подстановочный драйвер, если посмотреть на него внимательно, является драйвером HP DeskJet 500:
С выходом ОС Windows Server 2008 Майкрософт представил решение Easy Printing, которое позиционировалось как панацея для многочисленных проблем с печатью в терминалах. Идея заключается в создании специального перенаправленного принтера с Easy Print драйвером, который печатает в XPS (Майкрософтовский открытый формат документов, призванный заменить pdf, но успеха не снискавший), а XPS затем переправляется на сторону клиента, где благополучно печатается на локальный принтер как XPS документ. В теории такой метод печати решил бы все проблемы, но на практике то ли Майкрософт этот метод до ума не довёл, то ли на него надавили производители принтеров и/или альтернативных решений для печати в терминалах, но Easy Printing проблем с печатью так и не решил: всё осталось как и раньше: подключаешь к терминальному серверу нового клиента и надеешься на то, что его принтер удастся «подружить» с терминалами, своего рода «connect and pray». Как бы то ни было, Easy Printing включается также через групповые политики, там же, где и драйвер подстановки:
4. Схема со Screwdrivers
Поскольку проблем с печатью на терминалах всегда была адовая прорва (по данным некоторых ИТ аутсорсеров, проблемы с печатью это наиболее часто встречающиеся проблемы), свою нишу нашли компании, которые делали процесс печати из терминалов более удобным, а иногда и вообще его просто «делали», когда иначе печатать было просто невозможно.
Решение Tricerat Screwdrivers платное. Оно состоит из серверной части (ставится на сервере терминалов) и клиентской части (есть msi пакеты, удобные для масс-деплоймента через ГП или SCCM). Особых настроек не требует и обычно всё прекрасно работает с настройками по-умолчанию после установки на сервере и на всех клиентах. После простой установки обычно клиент оказывается способен печатать на свои принтеры, на которые не удавалось настроить печать без screwdrivers. Поскольку этой статьи тогда ещё не было написано, а спецов по терминальным серверам не так много, то настройка терминальной печати и решение проблем с ней могло затягиваться на часы и дни. Поэтому многие приняли разумное решение по радикальному решению проблем с терминальной печатью: купить и задеплоить Screwdrivers. Кроме собственно печати Screwdrivers позволяют осуществлять тонкий тюнинг терминальной печати, например, регулировать ширину канала для печати:
Но… не всё оказалось так просто. Дело в том, что существуют некоторые, особо жадные производители принтеров (не будем говорить кто, хотя это Hewlett-Packard), которые СПЕЦИАЛЬНО (это не факт, а моё оценочное суждение) отрезают поддержку печати в терминалах на принтерах, позиционирующихся для рынка SOHO. Это всё делается, конечно, для повышения продаж, т.к. решение HP для случаев непечати в терминалах простое: покупайте новый, более дорогой девайс. Такие модели принтеров зачастую не печатают даже со screwdrivers и в этих случаях ничего сделать невозможно, только менять принтер на совместимый с терминалами. О том, как определить совместимость принтера с терминальной печатью рассказываем в следующей главе.
5. Совместимые с терминалами принтеры
Как правило, все современные принтеры любых производителей ценой хотя бы от 5 т.р. совместимы с печатью в терминалах, за исключением Hewlett-Packard. Если Вы верны традициям печати этой компании и хотите приобрести принтер непременно этого производителя, то существует специальный, регулярно обновляемый документ производства Citrix & HP, который легко ищется в Сети по ключевым словам «Citrix XenApp HPPrinters supported» (ссылку намеренно не даю, т.к. постоянно выходят новые версии и меняется URL). Здесь нам поможет информация из первого абзаца, а именно, тот факт, что XenApp есть надстройка над майкрософтовскими терминалами, позволяет с определённой долей уверенности утверждать, что принтеры, поддерживаемые в среде XenApp, скорее всего также будут печатать и в среде MS Terminal Services & MS Remote Desktop Services. Автору пока неизвестно ни об одном случае отклонения от этого правила, и принтеры, поддержка которых заявлена в этом документе, оказывались печатающими и в майкрософтовских терминалах.
Помимо HP, Citrix также поддерживает аналогичные списки и для устройств некоторых других производителей, например, для принтеров Xerox. По мнению автора, сам факт существования таких списков у Цитрикса свидетельствует о том, что производители, для устройств которых составляются такие списки, поддерживают печать в терминалах ПЛОХО. Именно поэтому Цитрикс и вынужден эти списки составлять и публиковать. Отсутствие таких списков в отношении устройств Samsung или Kyocera, по мнению автора, свидетельствует о том, что с печатью в терминалах у этих устройств всё в порядке. Автору, пожалуй, ни разу не доводилось встречать хоть сколько-нибудь серьёзных устройств (исключая понятные случаи вроде переносных персональных принтеров, всяких там древних струйников и т.п.) этих производителей, в которых терминальная печать была бы невозможна.
Увы, список этот неполный и трудно понять, если, конечно, не привлекать к объяснению теории заговора, почему уже давно продающиеся модели принтеров долго не включаются в этот список. Однако, общее правило такое: если модели принтера в списке нет, то лучше не брать: существует значимая вероятность того, что принтер окажется несовместимым с печатью в терминалах.
6. Печать через VPN
Настроить печать на перенаправляемый принтер в терминалах так и не удалось? Есть гарантированно рабочее решение, которое будет работать с любым принтером, на который можно печатать через «службу доступа к общим папкам и принтерам», она же SMB. Для этого локальный принтер следует «расшарить» для общего доступа и установить VPN-канал между клиентским ПК и сервером. Самые простые варианты это RRAS на сервере и PPTP-клиент (встроенный в Windows) на клиентском ПК или OpenVPN. После установки канала необходимо просто подключить печать по сети на расшаренный на клиентском ПК принтер стандартными средствами, убедившись, что прохождению траффика SMB не препятствует firewall и прочее.
Таким же способом к серверу терминалов через VPN можно подключать сетевые принтеры, через «Стандартный порт TCP/IP», для чего нужно обеспечить прохождение порта TCP 9100, используемого для печати на сетевые принтеры.
Единственная возможная проблема с этим способом заключается в отсутствии драйверов для принтера под серверную OS, на которой развёрнуты службы терминалов. Если п. 2 и 3 также не помогают, то в этом случае точно поможет только приобретение нового принтера.
Часть II
1. Типы проблем с печатью в терминалах
Все проблемы с терминальной печатью можно условно разделить на несколько типов. Типы указаны в порядке приоритета при решении проблем с печатью, с учётом трудозатратности шага и вероятности возникновения проблемы именно такого типа.
а) Локальные проблемы с печатью. Для их решения нужно прежде всего убедиться, печатает ли принтер локально. Может, у него бумага кончилась или ещё что. Проблемы этого типа в настоящем руководстве не рассматриваются
б) Проблемы с отсутствием драйверов на сервере терминалов: никакие принтеры не перенаправляются, кроме тех, драйверы на которые входят в стандартную поставку Windows. Для решения проблем такого типа необходимо устанавливать драйверы на сервере и/или настраивать поведение сервера при отсутствующих драйверах (Easy Print и драйвер HP DeskJet 500), см. часть I, п. 2 и п. 3
в) Проблемы с отсутствием печати на успешно проброшенный принтер. Метод решения такого типа проблем следующий: смотрим какой драйвер подцепился к проброшенному принтеру, Easy Print или DeskJet 500, пробуем их менять местами; если не помогает, то ставим на сервер родной драйвер (если их больше 1, то последовательно пробуем все, т.к. в случае HP бывает, что старые драйверы работают, а в новых поддержка терминалов уже отрезана) и убеждаемся, что к проброшенному принтеру подцепился именно родной драйвер; если это не помогает, то продаём клиенту и разворачиваем Tricerat Screwdrivers, предварительно протестировав возможность печати через него в Trial версии; если это не помогает то увы, только замена принтера или печать через VPN, см. часть I, п. 6
Редко возникающие проблемы
2. Проблемы со спулером
Симптомы:
Служба Spooler, она же spoolsv.exe, он же «Диспетчер очереди печати» тупо останавливается без объяснения причин. При рестарте опять останавливается через несколько секунд. Такое часто бывает из-за кривых драйверов на дешёвые принтеры и часто случается на терминальных серверах, на которых используется схема без драйверов подстановки, т.е. устанавливаются драйверы на все модели принтеров, установленных у клиентов. Также могут быть и другие варианты, типа ни один принтер не пробрасывается, хотя драйверы стоят и т.п.
Что делать:
Поскольку указателя на то, из-за чего именно вылетает spooler в таких случаях обычно не бывает, то проще и быстрее всего полностью зачистить всю подсистему печати сервера и заново выполнить настройки печати и поставить драйверы. Для этого пригодится утилита cleanspl.exe из Resource Kit for Windows Server 2003. Запускаем, соглашаемся, утилита полностью выпиливает и зачищает всю подсистему печати сервера. В 2008 и выше не поддерживается, для этой ОС Майкрософт предлагает такое решение: http://support.microsoft.com/kb/2000007
После действия cleanspl.exe мониторы печати нужно восстанавливать вручную с новой аналогичной операционной системы:
Типовой файл реестра прилагается к этому документу. Достоверно известно, что для работы перенаправления печати в терминал требуется USB Monitor, см. ч. II, п. 4.
3. Драйвер перенаправления
Симптомы:
Не создаются перенаправляемые принтеры и в «диспетчере устройств» в «системных устройствах» отсутствует специальное устройство «перенаправитель устройства сервера терминалов», он же «remote desktop device redirector bus», в 2003 выглядит так:
В 2008 R2 выглядит так:
Что делать:
Переставлять драйвер редиректора, inf-файл поставляется вместе с системой, для установки можно воспользоваться утилитой devcon.exe (http://support.microsoft.com/kb/311272):
devcon -r install %windir%infmachine.inf rootrdpdr
Проверять через появление соотв. устройства в списке системных устройств девайс менеджера.
4. Реестр
Симптомы:
Не перенаправляются никакие принтеры. Из-за неверно выставленных прав на реестр или по иным причинам не выставлена правильно или отсутствует запись реестра.
Что делать:
В ключе реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwd создать запись типа DWORD fEnablePrintRDR и установить её в 1.
В ключе реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPrintMonitorsUSB Monitor создать запись типа «строковой параметр» Driver и установить её значение в usbmon.dll (сам файл правильной версии должен присутствовать в %windir%system32)
5. Визард устранения проблем от Майкрософт
Мне ни разу не помог, но на всякий случай Terminal Server Printer Redirection Wizard Tool
http://www.microsoft.com/en-us/download/details.aspx?id=5640
6. Если больше ничего не помогает, а печатать принтер должен
Стандартные проблемы: переставить последний сервис-пак и накатить обновления, выполнить sfc /scannow, убедиться что принтер таки может печатать на другом таком же терминальном сервере с такой же OS и т.п.
7. Печать на медленных каналах
Особенно касается всяких допотопных DSL модемов, 3G-модемов и т.п. Т.к. для работы терминала не требуется широкополосного доступа, то у пользователя может возникнуть ощущение, что с его интернетом всё ОК, до тех пор, пока он не начнёт печатать. Задание на печать может занимать несколько мегабайт и на медленном канале печататься спустя десятки минут после отправки на печать. Если такое поведение для клиента неприемлемо, можно попробовать Screwdrivers, который позволяет сжимать траффик печати, либо убедить его приобрести нормальный интернет.
8. Полезные ссылки
Группа проблем печати в терминалах: http://ts.veranoest.net/ts_printing.asp
Ключи реестра сервера терминалов: http://etutorials.org/Microsoft+Products/microsoft+windows+server+2003+terminal+services/Chapter+6+Registry/Registry+Keys+for+Terminal+Services/
Если не получилось — заказывайте мастера на выезд http://remont-kompjuterov-perm.ru/