Управление принтерами и драйверами печати в Windows из PowerShell

С помощью PowerShell можно автоматизировать типовые задачи управления принтерами и драйверами печати в Windows. В этой статье мы рассмотрим, как из консоли PowerShell создать, удалить или открыть общий доступ к принтеру, назначить принтер по-умолчанию; подключить сетевой принтер; установить или удалить драйвера принтера; управлять локальными портами и очередями печати.


Для управления подсистемой печати в Windows можно использовать встроенный PowerShell модуль PrintManagement. В этом модуле доступно 22 команды для управления принтерами:
Get-Command –Module PrintManagement
модуль powershell - PrintManagement управление принтерами

В модуле PrintManagement доступны 22 командлета PowerShell для управления принтерами, драйверами, портами печати и очередями:

  • Add-Printer – добавить (установить) новый принтер;
  • Add-PrinterDriver — установить новый драйвер печати;
  • Add-PrinterPort – создать порт печати;
  • Get-PrintConfiguration – вывести настройки принтера;
  • Get-Printer – вывести список принтеров на компьютере;
  • Get-PrinterDriver – вывести список установленных драйверов печати;
  • Get-PrinterPort — вывести список портов печати;
  • Get-PrinterProperty – показать свойства принтера;
  • Get-PrintJob – получить список заданий печати;
  • Read-PrinterNfcTag – получить информацию о принтере из NFC метки;
  • Remove-Printer — удалить принтер;
  • Remove-PrinterDriver — удалить драйвер принтера;
  • Remove-PrinterPort — удалить порт принтера;
  • Remove-PrintJob – удалить задание печати;
  • Rename-Printer — переименовать принтер;
  • Restart-PrintJob — перезапустить задание печати;
  • Resume-PrintJob — запустить приостановленное задание
  • Set-PrintConfiguration – изменить параметры печати принтера;
  • Set-Printer – изменить настройки принтера;
  • Set-PrinterProperty — изменить свойства принтера;
  • Suspend-PrintJob – приостановить выполнение задания печати;
  • Write-PrinterNfcTag – записать информацию в метку NFC.

Установка драйвера печати в хранилище драйверов

Вывести список драйверов печати, который установлены в хранилище драйверов Windows:

Get-PrinterDriver

Get-PrinterDriver вывод списка установленных драйверов для принтеров

В модуле PrintManagement есть командлет AddPrinterDriver, которые предполагает возможность установки драйвера из INF файла. Но фактически этот командлет позволяет добавить драйвера только в офлайн образ Windows (аналог Add-WindowsDriver, позволяющим интегрировать драйвера в оффлайн образ Windows).

Для установки драйвера печати из INF файла нужно использовать утилиту pnputil. Драйвера для нужной вам модели принтера нужно предварительно скачать с сайта разработчика и распаковать в локальную папку.

pnputil.exe -i -a "C:\drivers\KYOCERA\KyoClassicUniversalPCL6\OEMsetup.inf"

pnputil устанвить драйвер печати из inf файла

После того, как драйвер добавлен в хранилище драйверов, необходимо добавить его в список доступных принт-сервере.

Add-PrinterDriver -Name "Kyocera Classic Universaldriver PCL6"

Точное имя драйвера принтера скопируйте из INF файла. Узнать точное имя драйвера принтера из INF файла

Выведите список доступных драйверов печати:

Get-PrinterDriver

Get-PrinterDriver список устанволенных драйверов принтеров

Установка принтера с помощью PowerShell

Перед тем как создать новый принтер, нужно создать порт печати. Это может быть локальный порт или сетевой порт (в случае печати на удаленный принтер по сети), Например:
Add-PrinterPort -Name "LocalPort:" -ErrorAction -Verbose

или

Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"

Чтобы создать новый принтер, нужно указать имя принтера, драйвер, и порт печати:

Add-Printer -Name "Ricoh IM 2702" -DriverName "Kyocera Classic Universaldriver PCL6" -PortName USB001 -Verbose

Add-Printer создать (установить) принтер с помощью powershell

Проверьте, что новый принтер появился в панели управления.

Принтер появился в панели Параметры Windows

Если нужно изменить имя принтера:

Rename-Printer -Name "Ricoh IM 2702" -NewName “Ricoh_2702"

Чтобы расшарить принтер по сети (открыть общий сетевой доступ к принтеру):

Set-Printer -Name "Ricoh IM 2702" -Shared $True -ShareName "Ricoh_2702"

Отключить общий доступ к принтеру:

Set-Printer -Name "Ricoh IM 2702" -Shared $False

Вывести список принтеров на сервере печати с помощью PowerShell

Вывести список принтеров, установленных на компьютере:

Get-Printer

Команда вернет имя принтера, тип (локальный или сетевой), драйвер, порт печати, открыт ли к принтеру общий доступ и опубликован ли принтер в AD.

Get-Printer вывод списка установленных принтенов на принт сервере

Большинство командлетов модуля PrintManagement можно использовать для управления принтерами на удаленных компьютерах (с помощью параметра -ComputerName).
Вывести список принтеров, установленных на удаленном компьютере (принт-сервере):

Get-Printer -ComputerName msk-prnt1 | Format-List Name,DriverName

Вывести только принтера с общим доступом:

Get-Printer -ComputerName msk-prnt1 | where Shared -eq $true | fl Name

Вывести все принтеры с поддержкой дуплексной печати:

Get-Printer | ForEach-Object { Get-PrintConfiguration -PrinterName $_.Name } | Where-Object { $_.DuplexingMode -ne "OneSided" }

powershell вывесим принтера с поддержкой дуплексной печати

Вывести цветные принтеры:

Get-Printer | ForEach-Object { Get-PrintConfiguration -PrinterName $_.Name } | where {$_.Color -eq $True}

Включить цветной режим печати для принтера:

Get-Printer 'HP Color LaserJet 150nw' | Set-PrintConfiguration -Color $true

Подключить сетевой принтер из консоли PowerShell

Чтобы подключить сетевой принтер с сервера печати, выполните:

Add-Printer -ConnectionName \\msk-prnt1\HPCL3020

Вывести список подключенных на компьютере сетевых принтеров:

Get-Printer | ?{$_.type -eq 'Connection'}

Удалить конкретный сетевой принтер:

Get-Printer -name \\msk-prnt1\HPCL3020 | Remove-Printer -force

Удалить все подключенные сетевые принтеры на компьютере:

Get-Printer | ?{$_.type -eq 'Connection'} | Remove-Printer

Назначить принтер по-умолчанию

В Windows 10 и выше в качестве принтера по умолчанию назначается принтер, на котором пользователь успешно печатал последний раз. Чтобы Windows не переназначала принтера по-умолчанию, нужно создать в реестре параметр LegacyDefaultPrinterMode:

Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 –Force

Назначить принтер по-умолчанию:

$Printer = Get-CimInstance -Class Win32_Printer -Filter "Name='Ricoh IM 2702'"
Invoke-CimMethod -InputObject $Printer -MethodName SetDefaultPrinter

Powershell: назначить принтер по-умолчанию

Удаление принтера с помощью PowerShell

Чтобы удалить принтер, выполнить команду PowerShell:

Remove-Printer -Name "Ricoh IM 2702"

Затем можно удалить драйвер печати:

Remove-PrinterDriver -Name "Kyocera Classic Universaldriver PCL6"

В конце оставлю еще несколько полезных команд управления принтерами для системного администратора:

Отправить тестовую страницу на печать:

Invoke-CimMethod -MethodName printtestpage -InputObject (Get-CimInstance win32_printer | Where-Object Name -eq "HP LaserJet M1530 MFP Series PCL 6")

Очистить очередь печати принтера:

Get-Printer -Name "HP LaserJet M1530 MFP Series PCL 6" | Get-PrintJob | Remove-PrintJob


Предыдущая статья Следующая статья


Комментариев: 31 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)