Управление печатными устройствами через интерфейс Windows — задача тривиальная, но что делать, если графическая оболочка недоступна? Например, на сервере без GUI, при удалённой настройке через RDP с ограниченными правами или в случае сбоя системы. Командная строка (CMD) и PowerShell становятся единственным инструментом для администрирования принтеров и факсов. Эта статья раскроет все нюансы: от базовых команд до автоматизации задач с помощью скриптов.
Многие системные администраторы и IT-специалисты сталкиваются с необходимостью настраивать печатные устройства на десятках машин одновременно. Ручное добавление каждого принтера через Панель управления отнимает часы, тогда как пакетные файлы (.bat) или PowerShell-скрипты справляются за минуты. Кроме того, командная строка позволяет диагностировать проблемы, которые невозможно выявить через графический интерфейс — например, конфликты драйверов или ошибки очереди печати.
Если вы никогда не работали с CMD в контексте принтеров, не беспокойтесь: мы разберём всё от простого к сложному. А для опытных пользователей припасли редкие приёмы — например, как перенаправить факс на другой номер через консоль или сбросить настройки принтера до заводских без физического доступа к устройству.
Базовые команды для управления принтерами в CMD
Начнём с основ: как получить список установленных принтеров, добавить новое устройство или удалить ненужное. Все эти действия выполняются через утилиту printui.dll, которая входит в стандартный комплект Windows.
Чтобы открыть графическое окно управления принтерами из командной строки, используйте:
rundll32 printui.dll,PrintUIEntry /?
Эта команда выведет список всех доступных параметров. Например, для просмотра текущих принтеров введите:
wmic printer list brief
Результат будет похож на таблицу с колонками Name, DriverName, PortName и Status. Если принтер отмечен как Offline, это может указывать на проблемы с подключением или драйвером.
⚠️ Внимание: Командыwmicработают только с правами администратора. Если вы видите ошибкуAccess Denied, запуститеCMDот имени администратора (Win + X → Командная строка (администратор)).
Для добавления нового принтера через командную строку используйте:
rundll32 printui.dll,PrintUIEntry /if /b "Название принтера" /f "C:\путь\к\драйверу.inf" /r "IP-порта" /m "Модель принтера"
Где:
- 📌
/if— флаг установки принтера; - 📌
/b— имя принтера (будет отображаться в системе); - 📌
/f— путь к.inf-файлу драйвера; - 📌
/r— IP-адрес или имя порта (например,LPT1:для локального порта); - 📌
/m— точная модель принтера (должна совпадать с названием в.inf-файле).
Пример для сетевого принтера HP LaserJet P2055dn:
rundll32 printui.dll,PrintUIEntry /if /b "HP Office" /f "C:\Drivers\HP\hpljp205.inf" /r "192.168.1.100" /m "HP LaserJet P2055dn"
Если принтер не добавляется, проверьте совместимость драйвера с версией Windows. Например, драйверы для Windows 7 могут не работать в Windows 11 без режима совместимости.
Удаление и очистка очереди печати
Зависшая очередь печати — одна из самых распространённых проблем. Вместо того чтобы перезагружать компьютер или принтер, можно сбросить очередь через CMD.
Сначала остановите службу печати:
net stop spooler
Затем удалите все файлы из папки очереди (по умолчанию C:\Windows\System32\spool\PRINTERS):
del %systemroot%\System32\spool\PRINTERS\* /Q
И перезапустите службу:
net start spooler
Если принтер всё ещё не работает, проверьте его статус командой:
wmic printer where name="Имя_принтера" get status
Возможные статусы:
- ✅
Idle— принтер готов к работе; - ⚠️
Printing— выполняется печать; - ❌
Offline— устройство отключено или недоступно; - 🔧
Error— требуется вмешательство (например, замятие бумаги).
Для полного удаления принтера из системы используйте:
rundll32 printui.dll,PrintUIEntry /dl /n "Имя_принтера"
⚠️ Внимание: Удаление принтера черезCMDне удаляет драйвер. Чтобы очистить и драйвер, добавьте флаг/dn:rundll32 printui.dll,PrintUIEntry /dn /n "Имя_принтера"
☑️ Очистка очереди печати
Управление факсами через командную строку
Факсимильные аппараты всё реже встречаются в офисах, но некоторые отрасли (например, медицина или юриспруденция) до сих пор активно их используют. Windows включает встроенную службу факсов (Fax Service), которой можно управлять через консоль.
Для начала проверьте, установлена ли служба:
sc query fax
Если служба отсутствует, установите её через Панель управления → Программы и компоненты → Включение или отключение компонентов Windows (галочка Службы факсов).
Основные команды для работы с факсами:
| Команда | Описание |
|---|---|
net start fax |
Запуск службы факсов |
net stop fax |
Остановка службы |
fxscover "Текст" /server:localhost /printer:"Имя_принтера" |
Создание титульной страницы факса |
fxsroute /add /area:123 /phone:4567890 /printer:"Имя_принтера" |
Настройка маршрутизации входящих факсов |
Для отправки факса из командной строки используйте утилиту faxsend.exe (входит в комплект Windows Server):
faxsend send /n "4951234567" /d "C:\documents\contract.pdf" /cover "C:\covers\page.tif"
Где:
- 📞
/n— номер получателя; - 📄
/d— путь к документу; - 🖼️
/cover— путь к титульной странице (опционально).
⚠️ Внимание: Служба факсов в Windows 10/11 может требовать дополнительных драйверов для модемов. Если командаfaxsendне работает, проверьте наличие устройства вДиспетчере устройств(разделМодемы).
Как проверить журнал факсов?
Журнал входящих/исходящих факсов хранится в C:\ProgramData\Microsoft\Windows NT\MSFax\ActivityLog. Чтобы открыть его через CMD, используйте:
notepad "%ProgramData%\Microsoft\Windows NT\MSFax\ActivityLog\*.log"Автоматизация с помощью PowerShell
PowerShell предлагает более гибкие инструменты для управления принтерами, чем классическая CMD. Например, можно экспортировать список всех принтеров в CSV-файл или массово изменить настройки.
Получить список принтеров с расширенными данными:
Get-Printer | Select-Object Name, DriverName, PortName, Shared, Type | Export-Csv -Path "C:\printers_list.csv" -NoTypeInformation
Установить принтер по умолчанию:
Set-Printer -Name "Имя_принтера" -Default
Изменить приоритет принтера в очереди:
Set-Printer -Name "Имя_принтера" -Priority 1
Для массового добавления принтеров на несколько компьютеров используйте скрипт:
$printers = @(
@{Name="HP_LaserJet"; Driver="HP LaserJet P2055dn"; Port="192.168.1.100"; Shared=$true},
@{Name="Xerox_WorkCentre"; Driver="Xerox WorkCentre 3225"; Port="192.168.1.101"; Shared=$false}
)
foreach ($printer in $printers) {
Add-Printer -Name $printer.Name -DriverName $printer.Driver -PortName $printer.Port -Shared $printer.Shared
}
Преимущество PowerShell — возможность интеграции с Active Directory. Например, можно назначить принтеры пользователям на основе их групповой политики:
Get-ADUser -Filter * -SearchBase "OU=Sales,DC=domain,DC=com" | ForEach-Object {
Add-Printer -ConnectionName "\\printserver\Sales_Printer" -UserName $_.SamAccountName
}
Чтобы избежать ошибок при массовой установке, сначала проверьте доступность портов командой Test-NetConnection 192.168.1.100 -Port 9100 (для сетевых принтеров).
Диагностика и устранение ошибок
Ошибки принтеров в командной строке часто проявляются в виде кодов состояния или сообщений WMI. Рассмотрим самые распространённые проблемы и их решения.
Ошибка 0x00000002 (ERROR_FILE_NOT_FOUND) при добавлении принтера:
- 🔍 Проверьте путь к
.inf-файлу драйвера; - 🔍 Убедитесь, что драйвер совместим с вашей версией Windows;
- 🔍 Попробуйте указать полный путь (например,
C:\Drivers\HP\hpljp205.infвместо относительного).
Ошибка 0x00000057 (ERROR_INVALID_PARAMETER):
- 🔍 Проверьте синтаксис команды (особенно кавычки и пробелы);
- 🔍 Убедитесь, что имя принтера не содержит запрещённых символов (
\ / : * ? " < > |); - 🔍 Если используется IP-адрес, проверьте его доступность через
ping.
Для диагностики портов принтера используйте:
wmic printer get name, portname, status
Если порт отмечен как Unknown, попробуйте создать его вручную:
rundll32 printui.dll,PrintUIEntry /if /b "TestPrinter" /f "C:\Windows\inf\ntprint.inf" /r "IP_192.168.1.100" /m "Generic Network Card"
Если принтер подключён по USB, но не определяется, попробуйте удалить его из Диспетчера устройств и переподключить. В 30% случаев проблема решается обновлением драйвера чипсета материнской платы.
Большинство ошибок принтеров в CMD связаны с неверными путями к драйверам или проблемами с портами. Всегда начинайте диагностику с команды wmic printer list full.
Расширенные сценарии: перенастройка факсов и сброс принтеров
Иногда требуется не просто добавить или удалить принтер, а выполнить более сложные манипуляции — например, перенаправить входящие факсы на другой номер или сбросить настройки принтера к заводским.
Перенаправление входящих факсов:
Если ваша компания изменила номер факса, но старый номер всё ещё активен, можно автоматически перенаправлять сообщения:
fxsroute /add /area:123 /phone:4567890 /forward:987654321 /printer:"Fax_Printer"
Где /forward:987654321 — новый номер получателя.
Сброс настроек принтера:
Некоторые принтеры (например, Xerox или Ricoh) поддерживают сброс через SNMP-команды. Для этого используйте утилиту snmpwalk (входит в комплект Net-SNMP):
snmpwalk -v 2c -c public 192.168.1.100 1.3.6.1.4.1.253.8.53.13.2.1.1.3.0 = INTEGER: 1
Где:
- 🔢
192.168.1.100— IP-адрес принтера; - 🔢
public— community-string (по умолчанию для многих принтеров); - 🔢
1.3.6.1.4.1.253.8.53.13.2.1.1.3.0— OID для сброса (уточните в документации к модели).
Экспорт и импорт конфигурации принтеров:
Если вам нужно перенести настройки принтеров на другой компьютер, экспортируйте их в файл:
printbrm -b -f "C:\printers_backup.printerExport"
А затем импортируйте:
printbrm -r -f "C:\printers_backup.printerExport"
⚠️ Внимание: Утилитаprintbrmдоступна только в Windows 10/11 Pro/Enterprise и Windows Server. В домашних редакциях используйтеPowerShell-скрипты для резервного копирования.
Безопасность: ограничение доступа к принтерам
В корпоративной среде важно контролировать, кто может печатать на тех или иных устройствах. Через командную строку можно настроить разрешения для принтеров, аналогично файловой системе.
Просмотр текущих разрешений:
icacls "C:\Windows\System32\spool\PRINTERS"
Ограничение доступа к принтеру для конкретного пользователя:
rundll32 printui.dll,PrintUIEntry /Xs /n "Имя_принтера" Permissions
После выполнения этой команды откроется графическое окно, где можно вручную настроить права. Для полной автоматизации используйте PowerShell:
$printer = Get-Printer -Name "Secure_Printer"
Set-PrinterPermission -PrinterName $printer.Name -UserName "DOMAIN\user" -PermissionType Allow -Permission Print
Чтобы заблокировать печать для всех, кроме администраторов:
icacls "C:\Windows\System32\spool\PRINTERS" /grant:r "Администраторы:(OI)(CI)F" /remove:g *S-1-1-0
Важно: Ограничение доступа через icacls влияет на всю очередь печати. Для гибкой настройки используйте Group Policy или специализированное ПО (например, PaperCut).
Для аудита печати включите журналирование в Group Policy: Конфигурация компьютера → Политики → Административные шаблоны → Принтеры → Включить ведение журнала печати.
FAQ: Частые вопросы по управлению принтерами через CMD
Можно ли добавить принтер без драйвера?
Нет, драйвер обязателен. Однако для многих моделей подходит универсальный драйвер Generic (например, Generic Text Only или MS Publisher Color Printer). Установите его командой:
rundll32 printui.dll,PrintUIEntry /ia /m "Generic Text Only" /f "C:\Windows\inf\ntprint.inf"
Как узнать IP-адрес сетевого принтера?
Если принтер подключён к сети, распечатайте страницу самотестирования (обычно удерживайте кнопку питания 5-10 секунд). Альтернативно используйте сканирование сети:
arp -a | findstr "192.168.1"
Или специализированные утилиты вроде Advanced IP Scanner.
Почему принтер добавляется, но не печатает?
Причины могут быть разные:
- 🔌 Проблемы с портом (проверьте
pingиtelnet IP 9100); - 🖨️ Несовместимый драйвер (попробуйте версию с сайта производителя);
- 📡 Ошибки очереди (очистите её, как описано выше);
- 🔒 Блокировка брандмауэром (откройте порт
9100для принтера).
Как отправить факс без титульной страницы?
Используйте команду faxsend без параметра /cover:
faxsend send /n "4951234567" /d "C:\document.pdf"
Если требуется отключить титульную страницу по умолчанию, измените настройки службы факсов через fxsconfig.
Можно ли управлять принтерами на Mac или Linux через командную строку?
Да, но команды будут другими:
- 🍎 macOS:
lpstat -p(список принтеров),lpadmin -p PrinterName -E -v lpd://IP/queue(добавление); - 🐧 Linux:
lpinfo -v(список портов),lpadmin -p PrinterName -v socket://IP:9100 -m drv:///sample.drv/generic.ppd.
Для факсов в Linux используйте hylafax или efax.