Сегодня поговорим о возможностях управления принтерами и их драйверами из командной строки, которые можно использовать в Windows 10 / 8.1 и Windows Server 2012 R2 /2016. В этой статье мы рассмотрим, как с помощью простых команд можно установить в системе новый локальный или сетевой принтер, драйвер печати, создать порт печати, отправить на печать тестовую страницу, удалить драйвер или принтер. Вы можете использовать командную строку в различных сценариях автоматической установки принтеров в заданиях SCCM, логон-скриптах групповых политик или на серверах, работающих в режиме Server Core.
- Готовые VBS скрипты для управления принтерами в Windows
- Установка драйвера принтера из командной строки
- Установка нового принтера из командной строки
- Управление принтером по-умолчанию
- Создаем TCP/IP порт для сетевого принтера
- Отправка на печать тестовой страницы
- Управление очередями печати из командной строки
- Включить общий доступ к принтеру из командной строки
- Как подключить сетевой принтер из командной строки
- Удаление принтера и драйвера печати из командной строки
Готовые VBS скрипты для управления принтерами в Windows
Для управления принтерами Microsoft разработала несколько vbs скриптов, позволяющих управлять принтерами и очередями печати, устанавливать и удалять драйвера принтеров и т.д.
Эти скрипты присутствуют во всех версиях Windows (начиная с Vista и Windows Server 2008) и находятся в каталоге C:\Windows\System32\Printing_Admin_Scripts\en-US.
- Вместо каталога en-US может быть другой каталог, соответствующий языку установленной системы. Для русской версии Windows это будет каталог ru-RU (полный путь C:\Windows\System32\Printing_Admin_Scripts\ru-RU);
- В Windows XP и Windows Server 2003 эти vbs скрипты хранятся в каталоге C:\WINDOWS\system32.
В каталоге находятся следующие vbs скрипты:
- Prncnfg.vbs – скрипт для отображения информации о настройках принтера;
- Prndrvr.vbs – управление драйверами принтеров (установка/удаление драйвера);
- Prnjobs.vbs – управления заданиями печати;
- Prnmngr.vbs – управление принтерами (в т.ч. создание и удаление принтера в системе);
- Prnport.vbs – управление подключением к удаленному принтеру по TCP/IP порту;
- Prnqctl.vbs – управление выполнением задания на печать;
- Pubprn.vbs – управление публикацией принтеров в Active Directory.
Рассмотрим типовые сценарии использования этих vbs скриптов.
Установка драйвера принтера из командной строки
Предположим, вам необходимо установить на компьютере пользователя универсальный драйвер печати HP (HP Universal Printer Driver). Скачайте соответствующую версию драйвера с сайта производителя и распакуйте его в произвольный каталог (например, C:\drv\HP Universal Print Driver).
Установим драйвер принтера командой:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prndrvr.vbs" -a -m "HP Universal Printing PCL 6" -i "C:\drv\HP Universal Print Driver\hpcu160u.inf"

Рассмотрим параметры команды:
-а
– добавить драйвер принтера;
-m "HP Universal Printing PCL 6"
– имя драйвера принтера;
-i “путь”
– полный путь к inf файлу драйвера.
После установки драйвера печати, он появится в свойствах сервера печати (Control Panel\Hardware and Sound\Devices and Printers ->Print Server Properties).
Установка нового принтера из командной строки
С помощью следующей команды можно установить новый принтер с именем HP5525, воспользовавшись ранее установленным драйвером печати HP Universal Printing PCL 6:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -a -p "HP5525" -m "HP Universal Printing PCL 6" -r "lpt1:"
-a
– устанавливается новый локальный принтер;
-p "HP5525"
– отображаемое имя принтера;
-m "HP Universal Printing PCL 6"
– используемый драйвер печати;
-r "lpt1:"
– имя используемого локального порта печати. В этом случае печать должна осуществляться через LPT порт. Здесь может быть указан параллельный порт (LPT1:, LPT2:), последовательный (СОМ1:, COM2: — перед установкой убедитесь что данный COM порт не используется другим устройством) или USB-порт (USB001 и т.д.).
Управление принтером по-умолчанию
Из командной строки вы можете выбрать какой принтер должен использоваться при печати по умолчанию. С помощью следующей команды можно вывести список всех доступных принтеров:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" –l
Текущий принтер по-умолчанию можно получить так:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" –g
Принтер по умолчанию HP Universal Printing PCL 6
Чтобы выбрать другой принтер для печати по умолчаню, выполните:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -t –р "HP5525"
Создаем TCP/IP порт для сетевого принтера
Если вы хотите подключить сетевой принтер, необходимо сначала создать для него сетевой порт (допустим ip адрес принтера 192.168.10.26):
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\Prnport.vbs" -a -r IP_192.168.10.26 -h 192.168.10.26 -o raw -n 9100
-r IP_192.168.10.26
– имя сетевого порта;
-h 192.168.10.26
– IP адрес устройства;
-o raw
– тип порта (raw или lpr);
-n 9100
— номер TCP порта устройства (обычно 9100).
А потом установим в системе новый сетевой принтер:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -a -p "HP5525" -m "HP Universal Printing PCL 6" -r "IP_192.168.10.26"
После окончания работы скрипта в системе появится новый принтер с именем HP5525
Отправка на печать тестовой страницы
Чтобы отправить тестовую страницу на печать на созданном ранее принтере, выполните:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnqctl.vbs” -e -p "HP5525"
Управление очередями печати из командной строки
С помощью скрипта prnjobs.vbs вы можете просматривать задания печати в очередях. Чтобы вывести все задания печати для всех локальных принетров, выполните команду:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs” –l
Чтобы вывести задания на конкретном принтере, нужно указать его имя:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs” –l –p HP5525
Для очистки очереди печати, на одном принтере выполните команду:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs” –x –p HP5525
Либо можно быстро очистить все очереди для всех принтеров (так гораздо удобнее, чем вручную очищать очередь печати):
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnjobs.vbs” –x
Включить общий доступ к принтеру из командной строки
Все новые принтеры, которое вы установили в Windows из командной строки являются локальными. Вы можете предоставить к ним общий доступ другим пользователей из графического интерфейса Windows (см. статью). Также вы можете открыть общий доступ к принетру из командной строки. Например, вы хотите дать доступ к своему общему принтеру HP5525, опубликовав его под именем HP5525_Shared. Используйте команду:
script "C:\Windows\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs” -t -p HP5525 -h "HP5525_Shared" +shared
Чтобы отключить общий доступ к принтеру, выполните:
script "C:\Windows\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs” -t -p "HP5525" -shared
Аналогично вы можете опубликовать принтер в Active Directory:
script "C:\Windows\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs” -t -p HP5525 +published
Чтобы отменить публикацию в AD для принтера, используйте аргумент «-published».
Как подключить сетевой принтер из командной строки
Чтобы подключить сетевой принтер, подключенный к другому компьютеру, используйте
команду:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -ac -p “\\prnt01\hp2000”
Удаление принтера и драйвера печати из командной строки
Полный список принетров в системе можно вывести так:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -l
Удалить принтер можно командой:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -d -p "HP5525"
Драйвер печати удаляется так:
cscript "C:\Windows\System32\Printing_Admin_Scripts\en-US\prndrvr.vbs" -d -m "HP Universal Printing PCL 6" -e "Windows x64" -v 3
В этой статье мы рассмотрели базовые операции со старыми-добрыми vbs-скриптами Microsoft, позволяющими управлять принтерами и их драйверами из командной строки в различных версиях Windows. Полный список возможностей и аргументов этих скриптов доступен в документации Microsoft или во встроенной в сами сценарии помощи (просто запустите в командной строке файл сценария без параметров).
В следующей статье мы познакомимся с новыми возможностями управления принтерами в Windows 10 / 8.1 и Windows Server 2016 / 2012 R2, которые предоставляет PowerShell.
а как можно управлять пользователями и группами что на вкладке безопастность?
Раздать права можно с помощью утилиты suninacl, к примеру:
SUBINACL /printer «HP5525» /grant=corp\itpro=MP
Доступны такие права
F : Full Control
M : Manage Documents
P : Print
Подскажите, как установить сетевой принтер на удалённый ПК без вмешательства, через скрип.
Спасибо.
Нужно, чтобы подключился сетевой принтер у конуретного пользователя? Или нужно создать новый локальный принтер, который ссылается на сетевой принтер по IP?
И какая версия Windows? В Windows 10 проще всего выполнять команды на удаленном компьютере через Enter-PSSession.
Если есть домен, еще проще установить принтер через GPO: https://winitpro.ru/index.php/2019/04/02/gpo-ustanovka-printerov/
Как удалить все подключённые сетевые принтеры одним махом?
Всё, что в сети пишут, на Win10 не работает.
Например, этот скрипт не работает.
strComputer = «.»
Set objWMIService = GetObject(«winmgmts:\\» & strComputer & «\root\cimv2»)
Set colInstalledPrinters = objWMIService.ExecQuery _
(«Select * From Win32_Printer Where Network = True»)
For Each objPrinter in colInstalledPrinters
objPrinter.Delete_
Next
Скорее всего, для удаления всех принтеров этим скриптом вам нужны права администратора. Если вы просто дважды щелкаете по vbs файлу он запускается не в привеллигированном режиме.
Попробуйте откыть cmd.exe с правами администратора и в ней выполнить команду:
cscript C:\ps\remove_all_printers.vbs
Изначально так делал. Не работает.
Действительно, в Windows 10 этот скрипт не работает. В резульатах WMI запроса
Select * From Win32_Printer Where Network = True
пусто.Можно удалить все сетевые принтеры с помощью PowerShell:
Get-printer | where Shared -eq $true| Remove-Printer
Спасибо, ваша статья подвела к мысли какой нужно выбрать порт для сетевого принтера и ошибка печати ушла)
Здравствуйте!
Может кто знает, как с помощью командной строки поменять ip адрес в настройках порта принтера?
Смотрите
prnport.vbs
с параметром-t
Только что помогло расшарить принтер т.к. при просмотре свойств принтера Проводник отваливался.
Сначала вывел имена принтеров, потом имя принтера вогнал в «кавычки» и заработал скрипт!
Соединился конечно через psexec.
Принтер не отвечает! второй день долблюсь
Принтер не захватывает бумагу, бумага стандартная офисная. Модель Canon IP2840, там всего одна кнопка, как не нажимала, чтобы перезагрузить, результат 0. Думаю, единственный способ сбросить все настройки через командную строку, возможно ошибка исчезнет. Подскажите пожалуйста, как это сделать
потратил время на ошибку 87, нашел совет на хабре, кому пригодится.
Тут стоит отметить одну важную особенность: имя принтера должно указываться точно так же как оно прописано в inf файле драйвера, ради примера уберите часть имени, скрипт выдаст ошибку: «Не удалось добавить драйвер принтера HP LaserJet Код ошибки Win32 87».
https://habr.com/ru/articles/242513/
это при добавлении драйвера в систему