Сегодня я бы хотел поделиться своим опытом устранения проблем печати на терминальном сервере Microsoft.
Подробности под катом.
Вместо Intro
Наверняка, почти каждый системный администратор, работающий с Windows и,
в частности, с терминальным сервером, сталкивался с проблемами печати.
Разрывается телефон, у всех одна и та же проблема: «Нажимаю на печать —
ничего не происходит!». Идем смотреть логи и видим следующую картину:
Знакомо? Никаких подробностей, ничего — гадайте, господа администраторы!
На форумах в интернете полно вопросов по этой теме и очень мало полных,
структурированных ответов. Что ж, попробуем собрать в кучу все варианты
решений.
Причины и решения
Итак, из-за чего может происходить подобная ситуация? Большую часть
подобных ситуаций вызывают установленные на сервере драйверы. - Необходимо помнить, что драйверы у клиентов и на сервере должны быть идентичны
- Убедитесь, что включена изоляция драйверов
- Удалите все драйвера на сервере и попробуйте использовать TS Easy Print
- Попробуйте решения сторонних компаний
А теперь пройдемся подробнее по всем пунктам. Для начала установим на наш терминальный сервер роль «Службы печати и документов».
Это позволит нам удобно управлять драйверами и принтерами, установленными в системе.
Идентичные драйвера
Думаю, тут особо не о чем рассказывать. Стоит помнить, что драйвера
необходимо брать с официальных страниц изготовителя принтера. Так же еще
один момент — стабильнее всего ведут себя PCL5. Если есть возможность
выбора между PCL5 и PCL6 — стоит установить PCL5 (соответственно,
серверу и клиенту).
Изоляция драйверов
В Windows 2008 появилась замечательная возможность изоляции драйверов
принтера. Теперь драйвер принтера подгружается не Spoolsv.exe а
специальным процессом PrintIsolationHost.exe. При «вылетании» драйвера принтера «слетает» только один экземпляр PrintIsolationHost.exe, а сама служба «Диспетчера печати» остается работоспособной, что, как понимаете, весьма влияет на настроение пользователей ;)
Чтобы включить данную возможность, нам необходимо открыть редактор локальной групповой политики ( gpedit.msc)
и пройти следующим путем: «Параметры компьютера -> Административные
шаблоны -> Принтеры». Находим и включаем следующие пункты: - Выполнить драйверы принтеров в изолированных процессах
- Переопределить параметр совместимости выполнения драйвера печати, назначенный драйвером печати
Будет выглядеть следующим образом:
TS Easy Print
Видимо, вняв наконец стенаниям системных администраторов, компания
Microsoft решила что-то сделать с необходимостью ставить зоопарк
драйверов на терминальный сервер и падающим из-за этого spoolsv.exe. В итоге, на свет родилась технология TS Easy Print.
Ключевой особенностью является, то, что больше нам не нужно
устанавливать на сервер драйвера для каждого принтера — вместо этого
используется унифицированный драйвер Remote Desktop Easy Print, соответственно, мы уходим от проблемы падающего спулера — ведь все операции с печатью выполняются на компьютере клиента.
Для того, чтобы явно определить, что мы хотим использовать на
терминальном сервере TS Easy Print, необходимо пройти опять же в
редактор локальной групповой политики ( gpedit.msc) по следующему
пути: «Параметры компьютера -> Административные шаблоны ->
Компоненты Windows -> Службы удаленных рабочих столов -> Узел
сеансов удаленных рабочих столов -> Перенаправление принтеров». Нас
интересуют следующие пункты, которые надо включить: - Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола
- Перенаправлять только используемый по умолчанию принтер клиента
Второй пункт необходим, если мы хотим, чтобы в терминале у клиента был только его принтер по умолчанию.
Далее, необходимо очистить наш сервер от лишних драйверов принтеров. Это
можно сделать в менеджере роли «Службы печати и документов».
Внимательно удаляйте драйвера! Необходимо оставить в живых такие вещи,
как «Remote Desktop Easy Print» и «Microsoft XPS Document Writer».
Именно они и отвечают за передачу печати на клиента.
Теперь перейдем к требованием на клиенте. Их всего два — использование
протокола RDP версии не ниже 6.1 и .NET Framework 3.0 с пакетом
обновления 1 (SP1). Больше от них ничего не требуется.
Решения сторонних компаний
Избавиться от проблемы падающего спулера призваны такое ПО как, например, ScrewDrivers ( сайт). Оно предоставляет клиент-серверную архитектуру.
Сервер ScrewDrivers — это компонент, который необходимо установить на
серверы, на которых планируется использовать печать в терминальном
сеансе. Клиент ScrewDrivers должен быть установлен на рабочих станциях.
Именно этот компонент позволяет создать на терминальном сервере
виртуальные принтеры, которые соответствуют локальным принтерам
пользователя.
В целом, напоминает Easy Print, но не бесплатно (впрочем, есть лекарства ;).
Заключение
На этом хочу откланяться. Возможно информация не полная — буду рад
услышать дополнения. Надеюсь, это поможет кому-то избежать часов
нервотрепки ;)
Удачи!
Источник: http://habrahabr.ru/post/140106/ |