Как решить проблемы подсистемы печати в терминальном сервере

    Приветствую, %habrausername%!

    Сегодня я бы хотел поделиться своим опытом устранения проблем печати на терминальном сервере Microsoft.

    Подробности под катом.

    Вместо Intro


    Наверняка, почти каждый системный администратор, работающий с Windows и, в частности, с терминальным сервером, сталкивался с проблемами печати.
    Разрывается телефон, у всех одна и та же проблема: «Нажимаю на печать — ничего не происходит!». Идем смотреть логи и видим следующую картину:

    image

    Знакомо? Никаких подробностей, ничего — гадайте, господа администраторы! На форумах в интернете полно вопросов по этой теме и очень мало полных, структурированных ответов. Что ж, попробуем собрать в кучу все варианты решений.

    Причины и решения


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

    • Необходимо помнить, что драйверы у клиентов и на сервере должны быть идентичны
    • Убедитесь, что включена изоляция драйверов
    • Удалите все драйвера на сервере и попробуйте использовать TS Easy Print
    • Попробуйте решения сторонних компаний


    А теперь пройдемся подробнее по всем пунктам. Для начала установим на наш терминальный сервер роль «Службы печати и документов».

    image

    Это позволит нам удобно управлять драйверами и принтерами, установленными в системе.

    Идентичные драйвера


    Думаю, тут особо не о чем рассказывать. Стоит помнить, что драйвера необходимо брать с официальных страниц изготовителя принтера. Так же еще один момент — стабильнее всего ведут себя PCL5. Если есть возможность выбора между PCL5 и PCL6 — стоит установить PCL5 (соответственно, серверу и клиенту).

    Изоляция драйверов


    В Windows 2008 появилась замечательная возможность изоляции драйверов принтера. Теперь драйвер принтера подгружается не Spoolsv.exe а специальным процессом PrintIsolationHost.exe. При «вылетании» драйвера принтера «слетает» только один экземпляр PrintIsolationHost.exe, а сама служба «Диспетчера печати» остается работоспособной, что, как понимаете, весьма влияет на настроение пользователей ;)

    Чтобы включить данную возможность, нам необходимо открыть редактор локальной групповой политики (gpedit.msc) и пройти следующим путем: «Параметры компьютера -> Административные шаблоны -> Принтеры». Находим и включаем следующие пункты:

    • Выполнить драйверы принтеров в изолированных процессах
    • Переопределить параметр совместимости выполнения драйвера печати, назначенный драйвером печати

    Будет выглядеть следующим образом:

    image

    TS Easy Print


    Видимо, вняв наконец стенаниям системных администраторов, компания Microsoft решила что-то сделать с необходимостью ставить зоопарк драйверов на терминальный сервер и падающим из-за этого spoolsv.exe. В итоге, на свет родилась технология TS Easy Print. Ключевой особенностью является, то, что больше нам не нужно устанавливать на сервер драйвера для каждого принтера — вместо этого используется унифицированный драйвер Remote Desktop Easy Print, соответственно, мы уходим от проблемы падающего спулера — ведь все операции с печатью выполняются на компьютере клиента.
    Для того, чтобы явно определить, что мы хотим использовать на терминальном сервере TS Easy Print, необходимо пройти опять же в редактор локальной групповой политики (gpedit.msc) по следующему пути: «Параметры компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров». Нас интересуют следующие пункты, которые надо включить:

    • Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола
    • Перенаправлять только используемый по умолчанию принтер клиента

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

    image

    Далее, необходимо очистить наш сервер от лишних драйверов принтеров. Это можно сделать в менеджере роли «Службы печати и документов».
    Внимательно удаляйте драйвера! Необходимо оставить в живых такие вещи, как «Remote Desktop Easy Print» и «Microsoft XPS Document Writer». Именно они и отвечают за передачу печати на клиента.

    Теперь перейдем к требованием на клиенте. Их всего два — использование протокола RDP версии не ниже 6.1 и .NET Framework 3.0 с пакетом обновления 1 (SP1). Больше от них ничего не требуется.

    Решения сторонних компаний


    Избавиться от проблемы падающего спулера призваны такое ПО как, например, ScrewDrivers (сайт). Оно предоставляет клиент-серверную архитектуру.
    Сервер ScrewDrivers — это компонент, который необходимо установить на серверы, на которых планируется использовать печать в терминальном сеансе. Клиент ScrewDrivers должен быть установлен на рабочих станциях. Именно этот компонент позволяет создать на терминальном сервере виртуальные принтеры, которые соответствуют локальным принтерам пользователя.
    В целом, напоминает Easy Print, но не бесплатно (впрочем, есть лекарства ;).

    Заключение


    На этом хочу откланяться. Возможно информация не полная — буду рад услышать дополнения. Надеюсь, это поможет кому-то избежать часов нервотрепки ;)
    Удачи!
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 12
    • +1
      А что делать с 2003 сервером? Вкусностей типа изоляции драйверов и Easy Print там нет.
      • +3
        Срочно переезжать на 2008r2 и забыть про проблемы сервера терминалов
        • 0
          Увы, видимо только выявлением сбойного драйвера или установкой сторонних решений.
          • 0
            Унифицировать парк техники.

            Как я вас понимаю, коллега :)
            • 0
              С 2003-им тоже никаких проблем. Используем 2х Application server. Печать «волшебная» :-)
              • 0
                поддерживаю вопрос
              • 0
                или внедрить thinprint и забыть о проблемах
                • 0
                  На клиенте кроме RDP версии 6.1 или выше и .NET Framework 3.0 SP1 должен еще быть обязательно установлен принтер Microsoft XPS Document Writer. Если его снести, печатать перестанет. :)
                  • 0
                    дотнет его и ставит, насколько мне известно.
                  • 0
                    Только недавно столкнулся с этой проблемой на 2008 сервере. Решилась проблемка довольно просто — устанавливал сетевые принтера. В этом случае безотказно работает.
                    Если на компе стоял локальный принтер, то устанавливал на сервер драйвер этого принтера и при удаленном подключении отключал галочку в параметрах — устройства Принтеры.
                    Вообще основная проблема была — печать крякозябрами.
                    За заметку спасибо, при гуглении такого совета не встречал.
                    • 0
                      Увы, установка сетевых принтеров не всегда панацея — у меня например нашелся такой, под которого не было драйверов на Win7/Server 2008. Тут и помог Easy Print.
                    • 0
                      Подскажите пожалуйста. Выполнил данные настройки на сервере, но при печати на некоторых принтерах ничего не происходит, даже нет постановки в очередь. Данная проблема очень часто встречается с драйвером Samsung Universal Print Driver. Заранее спасибо!

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.