40 принтеров и хаос с драйверами: централизованная печать для юридического холдинга

Задача клиента: 40 принтеров, 300 сотрудников и полный хаос

В ноябре 2025 года к нам в АйТи Фреш обратился юридический холдинг «ПравоГрупп» из Москвы. Три этажа бизнес-центра, 300 сотрудников, 40 принтеров разных производителей: HP LaserJet, Kyocera ECOSYS, Canon imageRUNNER и несколько Brother для удалённых кабинетов. Печать превратилась в хронический источник боли для всего офиса.

Картина была такая: юристы открывали список «Устройства и принтеры» и видели по 15–20 устройств, половина из которых давно не существовала. После обновления Windows 11 половина принтеров HP просто перестала печатать — конфликт драйверов. А каждый новый сотрудник означал для секретаря 30–40 минут ручной возни с установкой принтеров. Каждый раз.

«Наши юристы тратят время на борьбу с принтерами вместо работы с клиентами. Каждый понедельник у меня на столе лежат 5–10 заявок: не печатает, не видит принтер, напечаталось на другом этаже. Это должно прекратиться» — управляющий партнёр «ПравоГрупп».

Аудит текущего состояния печати

Мы начали с аудита инфраструктуры печати — и картина сложилась довольно быстро:

  • Active Directory: Windows Server 2019, один домен pravogroup.local, 300 пользователей в 12 OU
  • Принтеры: 40 устройств, подключены по IP напрямую к рабочим станциям (не через сервер печати)
  • Драйверы: 23 разных версии драйверов HP, 8 версий Kyocera, 5 версий Canon — каждый сотрудник устанавливал свою
  • GPO: не использовались для принтеров
# PowerShell — аудит принтеров на рабочих станциях
# Запускаем на нескольких машинах для понимания масштаба

Get-Printer | Select-Object Name, DriverName, PortName, Shared |
  Format-Table -AutoSize

# Name                          DriverName                  PortName
# ----                          ----------                  --------
# HP LaserJet Pro M404           HP LaserJet M402-M403       IP_10.0.3.21
# HP LaserJet Pro M404 (Copy 1)  HP Universal Printing PCL6  IP_10.0.3.21
# Kyocera ECOSYS M2040dn         Kyocera Classic Universalp  IP_10.0.3.35
# Canon iR-ADV C3525 III         Canon Generic Plus UFR II   IP_10.0.3.40
# HP LaserJet 400 M401           HP LaserJet 400 M401        IP_10.0.3.22
# Fax                            Microsoft Shared Fax Driver SHRFAX:
# Microsoft XPS Document Writer  Microsoft XPS Document Wr   PORTPROMPT:
# ... ещё 14 принтеров

# У одного юриста — 21 принтер, из них 8 уже не существуют!

# Проверяем драйверы
Get-PrinterDriver | Select-Object Name, MajorVersion | Sort-Object Name
# 37 разных драйверов на одной машине!

Корень проблемы — полное отсутствие централизованного управления. Принтеры добавлялись вручную, драйверы каждый ставил как придётся, единой точки администрирования не было в принципе. Стоило поменять IP-адрес одного принтера — и нужно было ногами обходить от 50 до 100 рабочих станций. Мы такое видели не раз.

Планирование архитектуры

Мы спроектировали целевую архитектуру под их задачи:

  1. Централизованный сервер печати на Windows Server 2022 с ролью Print Server
  2. Унифицированные драйверы: HP Universal Print Driver, Kyocera Universal Driver, Canon Generic Plus UFR II
  3. GPO-развёртывание: каждый отдел получает только свои принтеры автоматически
  4. PaperCut MF: учёт и квоты печати для контроля расходов
  5. Мониторинг: SNMP-мониторинг тонера, замятий и ошибок

Настройка сервера печати Windows Server 2022

Под сервер печати мы выделили отдельную виртуальную машину: 4 vCPU, 8 ГБ RAM, 100 ГБ SSD. Отдельная VM — это принципиально. Если спулер ляжет или начнёт чудить, контроллер домена это не почувствует.

Установка роли Print Server и настройка драйверов

# PowerShell — установка роли Print and Document Services
Install-WindowsFeature Print-Server -IncludeManagementTools
Install-WindowsFeature Print-Internet -IncludeAllSubFeature

# Проверяем
Get-WindowsFeature Print*
# [X] Print and Document Services
#   [X] Print Server
#   [X] Internet Printing

# Устанавливаем унифицированные драйверы
# HP Universal Print Driver (PCL6)
pnputil /add-driver "C:\Drivers\HP\hpcu270u.inf"

# Kyocera Universal Driver
pnputil /add-driver "C:\Drivers\Kyocera\OEMSETUP.inf"

# Canon Generic Plus UFR II
pnputil /add-driver "C:\Drivers\Canon\CNLB0MA64.inf"

# Добавляем драйверы в хранилище сервера печати
Add-PrinterDriver -Name "HP Universal Printing PCL 6"
Add-PrinterDriver -Name "Kyocera Universal Driver"
Add-PrinterDriver -Name "Canon Generic Plus UFR II"

# Проверяем установленные драйверы
Get-PrinterDriver | Select-Object Name, PrinterEnvironment, MajorVersion |
  Format-Table -AutoSize
# Name                            PrinterEnvironment       MajorVersion
# ----                            ------------------       ------------
# HP Universal Printing PCL 6     Windows x64              4
# Kyocera Universal Driver        Windows x64              4
# Canon Generic Plus UFR II       Windows x64              4

Вместо зоопарка из 37 версий драйверов — три универсальных. HP UPD закрывает все модели HP LaserJet, Kyocera Universal — все ECOSYS, Canon Generic Plus — все imageRUNNER. На практике это означает, что при появлении нового принтера в сети не нужно искать и ставить отдельный драйвер. Жизнь администратора сразу становится проще.

Добавление принтеров через PowerShell

Все 40 принтеров добавляются через PowerShell-скрипт с CSV-файлом:

# Файл printers.csv:
# Name,IP,Driver,Location,Floor,Department,Color
# HP-M404-1F-Reception,10.0.3.21,HP Universal Printing PCL 6,"1 этаж, ресепшн",1,Reception,false
# Kyocera-M2040-2F-Docs,10.0.3.35,Kyocera Universal Driver,"2 этаж, документооборот",2,Documents,false
# Canon-C3525-3F-Color,10.0.3.40,Canon Generic Plus UFR II,"3 этаж, зал переговоров",3,Meeting,true

# Скрипт массового добавления принтеров
$printers = Import-Csv -Path "C:\Setup\printers.csv" -Encoding UTF8

foreach ($p in $printers) {
    # Создаём TCP/IP порт
    $portName = "TCP_$($p.IP)"
    Add-PrinterPort -Name $portName -PrinterHostAddress $p.IP -ErrorAction SilentlyContinue
    
    # Создаём принтер
    Add-Printer -Name $p.Name `
        -DriverName $p.Driver `
        -PortName $portName `
        -Location $p.Location `
        -Comment "Этаж $($p.Floor), $($p.Department)" `
        -Shared `
        -ShareName $p.Name `
        -Published
    
    Write-Host "[+] Добавлен: $($p.Name) ($($p.IP))" -ForegroundColor Green
}

# Проверяем
Get-Printer -ComputerName localhost | 
  Select-Object Name, Shared, Published, Location |
  Format-Table -AutoSize

# Все 40 принтеров добавлены, расшарены и опубликованы в AD

Параметр -Published публикует принтер в Active Directory. После этого пользователи могут найти нужное устройство по расположению, этажу или названию — через стандартный поиск Windows, без звонков в поддержку.

GPO-развёртывание принтеров по отделам

Главная задача — чтобы каждый сотрудник видел только свои принтеры. Юрист со второго этажа не должен листать список из 40 устройств. Бухгалтерия должна сразу видеть свой цветной Canon для отчётов — и ничего лишнего.

Создание GPO для каждого этажа и отдела

# PowerShell — создание GPO для развёртывания принтеров

# GPO для 1-го этажа
New-GPO -Name "Printers-Floor1" -Comment "Принтеры 1-го этажа"
New-GPLink -Name "Printers-Floor1" -Target "OU=Floor1,OU=Users,DC=pravogroup,DC=local"

# GPO для 2-го этажа
New-GPO -Name "Printers-Floor2" -Comment "Принтеры 2-го этажа"
New-GPLink -Name "Printers-Floor2" -Target "OU=Floor2,OU=Users,DC=pravogroup,DC=local"

# GPO для 3-го этажа
New-GPO -Name "Printers-Floor3" -Comment "Принтеры 3-го этажа"
New-GPLink -Name "Printers-Floor3" -Target "OU=Floor3,OU=Users,DC=pravogroup,DC=local"

# Назначение принтеров в GPO через User Configuration
# Group Policy Management -> GPO -> User Configuration
# -> Preferences -> Control Panel Settings -> Printers
# -> New -> Shared Printer
#   Action: Create
#   Share path: \\print-srv\HP-M404-1F-Reception
#   Set this printer as default: Yes (для ближайшего)
#   Common tab -> Item-level targeting -> Security Group

# Пример назначения принтера по умолчанию через PowerShell
# (для User GPP Printer через Registry)
$gpoName = "Printers-Floor2"
$printerPath = "\\print-srv\Kyocera-M2040-2F-Docs"

# Создаём GPP Printer entry через GPMC
# User Configuration → Preferences → Control Panel → Printers
# Action: Replace
# Shared path: \\print-srv\Kyocera-M2040-2F-Docs
# Default: Yes
# Item-Level Targeting: OU = Floor2

Каждый GPO содержит 3–5 принтеров конкретного этажа. Пользователь вошёл в систему — принтеры уже подключены. Никаких ручных действий, никаких звонков в ИТ. Принтер по умолчанию — ближайший к рабочему месту. Всё.

Point and Print Restrictions

После волны обновлений безопасности Windows — PrintNightmare, CVE-2021-34527 — Microsoft заметно ужесточила политики Point and Print. Если не настроить это правильно, пользователи просто не смогут подключать принтеры с сервера:

# GPO: Point and Print Restrictions
# Computer Configuration → Administrative Templates → Printers

# 1. "Point and Print Restrictions" — Enabled
#    Users can only point and print to these servers:
#    print-srv.pravogroup.local
#    
#    When installing drivers for a new connection:
#    Do not show warning or elevation prompt
#    
#    When updating drivers for an existing connection:
#    Do not show warning or elevation prompt

# 2. "Package Point and Print - Approved servers"
#    Enabled: print-srv.pravogroup.local

# 3. Разрешаем автоматическую установку драйверов
# Computer Configuration → Administrative Templates → System
# → Driver Installation
# "Allow non-administrators to install drivers for these
#  device setup classes" — Enabled
#  GUID: {4d36e979-e325-11ce-bfc1-08002be10318}  (Printers)

# Применяем GPO
gpupdate /force /target:computer

# Проверяем применение
gpresult /r /scope:computer | Select-String -Pattern "Print"

Здесь есть один момент, который легко пропустить: FQDN сервера печати обязательно нужно прописать в список доверенных серверов. Без этого при каждом подключении принтера Windows будет требовать пароль администратора. Для 300 юристов — абсолютно нерабочий сценарий.

PaperCut: учёт, квоты и контроль расходов на печать

Холдинг тратил на печать больше 180 000 рублей в месяц — тонер, бумага, обслуживание. При этом никто не мог ответить на простой вопрос: кто сколько печатает? Мы внедрили PaperCut MF — и ответы появились довольно быстро.

Установка и настройка PaperCut MF

# PaperCut MF устанавливается на сервер печати
# Скачиваем с https://www.papercut.com/products/mf/
# Запускаем установщик — стандартный Windows Installer

# После установки — веб-интерфейс на https://print-srv:9192/admin

# Настройка через PowerShell (PaperCut CLI)
# Путь: C:\Program Files\PaperCut MF\server\bin\win

# Импорт пользователей из Active Directory
server-command.exe sync-group-and-shared-account-data

# Настройка квот по отделам
# Администрация: PaperCut Admin → Groups → Юристы
#   Quota: 500 страниц/месяц (ч/б) + 50 страниц (цвет)
# Группа: Секретариат
#   Quota: 2000 страниц/месяц (ч/б) + 200 страниц (цвет)
# Группа: Руководство
#   Quota: без ограничений

# Стоимость печати (для внутреннего учёта)
# Ч/б A4: 1.5 руб/стр
# Цвет A4: 8 руб/стр
# Двусторонняя печать: скидка 30%

# Настраиваем popup-подтверждение для цветной печати
# Options → General → Print popup
# "Вы отправляете цветную печать. Стоимость: {COST} руб.
#  Переключить на ч/б? [Да] [Нет]"

# Включаем принудительную двустороннюю печать
# Printers → HP-M404-1F-Reception → Scripting
# Default: force duplex for jobs > 3 pages
function printJobHook(inputs, actions) {
    if (inputs.job.totalPages > 3 && !inputs.job.isDuplex) {
        actions.job.setDuplex(true);
        actions.log.info("Forced duplex for job > 3 pages");
    }
}

Отчёты и аналитика печати

PaperCut даёт детальную аналитику по каждому пользователю, отделу и устройству. Именно она помогла «ПравоГрупп» реально оптимизировать расходы, а не просто «затянуть пояс»:

# Пример отчёта за первый месяц:
# Общий объём печати: 47 230 страниц
# Цветная печать: 8 412 страниц (17.8%)
# Двусторонняя: 31 890 страниц (67.5%) — после включения auto-duplex
# Топ-5 пользователей:
#   1. Иванова О.А. (секретарь)    — 4 230 стр
#   2. Петров А.С. (юрист)         — 2 180 стр
#   3. Сидоров К.В. (бухгалтерия)  — 1 890 стр
#   4. Козлова М.И. (юрист)        — 1 540 стр
#   5. Новиков Д.А. (секретарь)    — 1 320 стр

# Экономия от auto-duplex за месяц:
# ~15 000 страниц × 0.5 руб (бумага) = 7 500 руб/месяц
# Экономия от popup цветной печати:
# ~3 000 переключений на ч/б × 6.5 руб = 19 500 руб/месяц

# Настройка email-отчётов руководству
# PaperCut Admin → Reports → Scheduled Reports
# Monthly Print Summary → управляющему партнёру
# Department Breakdown → финансовому директору

Уже в первый месяц работы PaperCut выяснилось: 30% цветной печати была случайной. Юристы просто не замечали, что принтер по умолчанию — цветной. Добавили popup-подтверждение при цветной печати — и проблема ушла без каких-либо запретов и конфликтов.

Мониторинг и troubleshooting спулера

40 принтеров — это 40 потенциальных точек отказа. Тонер заканчивается, бумага застревает, принтер уходит в ошибку. Мы настроили проактивный SNMP-мониторинг и прописали процедуры для типовых ситуаций — чтобы не тушить пожары, а предупреждать их.

SNMP-мониторинг расходных материалов

«Тонер кончился, а у меня договор для клиента» — классика, которую мы слышали сотни раз. Чтобы раз и навсегда закрыть этот вопрос для «ПравоГрупп», написали скрипт: он опрашивает все 40 принтеров по SNMP и бьёт тревогу, как только тонер падает ниже 15%. АХО получает уведомление заранее — картридж успевают заказать до того, как принтер намертво встанет в самый неподходящий момент:

# PowerShell — скрипт мониторинга тонера через SNMP
# Запускается по расписанию Task Scheduler каждые 6 часов

$printers = Import-Csv "C:\Monitoring\printers.csv"
$alertThreshold = 15  # процент тонера для оповещения

foreach ($p in $printers) {
    # SNMP OID для уровня тонера (стандарт RFC 3805)
    # 1.3.6.1.2.1.43.11.1.1.9.1.1 — текущий уровень
    # 1.3.6.1.2.1.43.11.1.1.8.1.1 — максимальный уровень
    
    $currentLevel = (Get-SnmpData -IP $p.IP -OID "1.3.6.1.2.1.43.11.1.1.9.1.1" `
        -Community "public").Data
    $maxLevel = (Get-SnmpData -IP $p.IP -OID "1.3.6.1.2.1.43.11.1.1.8.1.1" `
        -Community "public").Data
    
    if ($maxLevel -gt 0) {
        $percent = [math]::Round(($currentLevel / $maxLevel) * 100)
        
        if ($percent -le $alertThreshold) {
            # Отправляем email АХО
            $body = "Принтер $($p.Name) ($($p.Location)): тонер $percent%.`nТребуется замена картриджа."
            Send-MailMessage -To "aho@pravogroup.ru" `
                -From "print-monitoring@pravogroup.ru" `
                -Subject "[Принтер] Низкий уровень тонера: $($p.Name)" `
                -Body $body -SmtpServer "mail.pravogroup.local"
            
            Write-Host "[!] $($p.Name): тонер $percent% — отправлено оповещение" -ForegroundColor Yellow
        }
    }
}

Типичные проблемы спулера и их решение

Помимо этого, мы передали ИТ-отделу «ПравоГрупп» готовый набор скриптов — чтобы типовые проблемы решались за минуты, а не за полдня переписки в хелпдеске:

# 1. Очистка зависших заданий печати
function Clear-PrintQueue {
    param([string]$PrinterName = "*")
    
    Get-PrintJob -PrinterName $PrinterName | Remove-PrintJob
    
    # Если не помогло — перезапуск спулера
    Stop-Service -Name Spooler -Force
    # Удаляем файлы из очереди
    Remove-Item "$env:SystemRoot\System32\spool\PRINTERS\*" -Force
    Start-Service -Name Spooler
    Write-Host "Спулер перезапущен, очередь очищена" -ForegroundColor Green
}

# 2. Диагностика подключения к принтеру
function Test-PrinterConnection {
    param([string]$IP)
    
    # Ping
    $ping = Test-Connection -ComputerName $IP -Count 2 -Quiet
    Write-Host "Ping: $(if($ping){'OK'}else{'FAIL'})" -ForegroundColor $(if($ping){'Green'}else{'Red'})
    
    # Порт 9100 (RAW printing)
    $tcp = Test-NetConnection -ComputerName $IP -Port 9100
    Write-Host "Port 9100 (RAW): $(if($tcp.TcpTestSucceeded){'OK'}else{'FAIL'})"
    
    # Порт 631 (IPP)
    $ipp = Test-NetConnection -ComputerName $IP -Port 631
    Write-Host "Port 631 (IPP): $(if($ipp.TcpTestSucceeded){'OK'}else{'FAIL'})"
    
    # SNMP (статус принтера)
    $status = Get-SnmpData -IP $IP -OID "1.3.6.1.2.1.25.3.5.1.1.1" -Community "public"
    $statusMap = @{1='Other';2='Unknown';3='Idle';4='Printing';5='Warmup'}
    Write-Host "Статус: $($statusMap[[int]$status.Data])"
}

# 3. Массовая переустановка принтеров на рабочей станции
function Reset-UserPrinters {
    Get-Printer | Where-Object {$_.Type -eq 'Connection'} | Remove-Printer
    gpupdate /force /target:user
    Write-Host "Принтеры удалены. GPO переприменено. Перелогиньтесь." -ForegroundColor Yellow
}

Результаты внедрения: цифры и выводы

Весь проект централизации печати для «ПравоГрупп» уложился в 2 недели: первая ушла на настройку сервера и GPO, вторая — на миграцию и тестирование.

Ключевые метрики

МетрикаДоПосле
Время подключения принтера новому сотруднику30–40 минут (вручную)0 минут (GPO автоматически)
Обращения в ИТ по проблемам печати (в месяц)45–60 заявок5–8 заявок
Версий драйверов на сервере37 разных3 универсальных
Расходы на печать (в месяц)~180 000 ₽~125 000 ₽ (−30%)
Доля двусторонней печати12%68%
Доля ненужной цветной печати~30%~8%
Время диагностики проблемы с принтером15–30 минут2–3 минуты (скрипты)

Рекомендации по развитию

После завершения проекта мы не просто ушли — передали «ПравоГрупп» дорожную карту развития инфраструктуры печати на следующие 12 месяцев:

  • Microsoft Universal Print — облачная печать без VPN-подключения к серверу. Удобно для удалённых сотрудников: принтеры доступны напрямую через облако. Подписка входит в Microsoft 365 E3/E5, отдельно платить не придётся.
  • Secure Print (Pull Printing) — документ выйдет из принтера только после того, как сотрудник приложит карту, введёт PIN или отсканирует QR-код. Для юридического холдинга это не опция, а необходимость: конфиденциальные бумаги, забытые на принтере, — один из самых частых инцидентов в юридических компаниях, мы видели это не раз.
  • OCR и электронный документооборот — интеграция сканирования МФУ с DMS. На практике внедрение нормального ЭДО режет объём печати ещё на 20–30%. Бумагу перестают печатать просто потому, что это больше не нужно.
  • Замена устаревших моделей — сократить зоопарк принтеров до 2–3 моделей одного производителя. Закупка расходников упрощается кратно, обслуживание тоже. Из личного опыта рекомендуем Kyocera ECOSYS: низкая стоимость отпечатка и ресурс, который реально соответствует заявленному.

Централизованная печать через Print Server и GPO — это не какая-то экзотика, а базовая практика для любой компании, где больше 10 принтеров. Без неё ИТ-отдел выгорает на рутинных заявках, а бизнес просто переплачивает за расходники. «ПравоГрупп» сэкономила 660 000 рублей в год только на картриджах — проект окупился ещё в первый месяц.

Часто задаваемые вопросы

Отдельный сервер под печать — физический или виртуальный — это не перестраховка, а здравый смысл. Спулер печати имеет неприятную привычку зависать и течь по памяти. Если он крутится на контроллере домена, его перезапуск рикошетом бьёт по аутентификации всех пользователей разом. Виртуалка на 4 ГБ RAM спокойно тянет 50+ принтеров — вполне достаточно.

После того как выстрелила CVE-2021-34527 (PrintNightmare), правила игры изменились. Нужно сделать три вещи: 1) настроить Point and Print Restrictions через GPO с явным указанием FQDN доверенного сервера печати; 2) включить Package Point and Print с тем же сервером; 3) убедиться, что все драйверы на сервере подписаны. Пропустите хотя бы один пункт — пользователи начнут получать ошибку при подключении принтера, и придётся разбираться в самый неудобный момент.

Универсальный драйвер работает только в рамках своего производителя — это важно понимать сразу. HP Universal Printing PCL 6 закрывает около 95% моделей HP. Kyocera Universal Driver тянет все ECOSYS и TASKalfa. Canon Generic Plus UFR II охватывает линейку imageRUNNER. Если парк смешанный — нужны все три, без вариантов.

PaperCut MF — платное решение: лицензия на сервер плюс подключения, стартует примерно от 30 000 руб. в зависимости от числа пользователей. Есть бесплатный PaperCut NG — функционал урезан, pull printing и интеграция с МФУ недоступны, но для базового учёта и квот вполне хватает. Окупается платная версия за 2–3 месяца — просто за счёт того, что люди перестают печатать всё подряд.

Нужна помощь с настройкой?

Специалисты АйТи Фреш возьмут внедрение и настройку на себя — за плечами 15+ лет реальных проектов, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#Print Management Windows Server#GPO развёртывание принтеров#Point and Print Restrictions#драйверы принтеров Windows#PaperCut квоты печати#print server настройка#спулер печати troubleshooting#Universal Print Microsoft