С помощью PowerShell можно автоматизировать общие задачи управления принтерами и драйверами принтеров в Windows. В этом руководстве рассказывается о том, как создавать, удалять или предоставлять общий доступ к принтеру с консоли PowerShell; устанавливать принтер по умолчанию; определять сетевой принтер; устанавливать или удалять драйверы принтера; управлять локальными портами и очередями печати.
Встроенный модуль PrintManagement PowerShell включает 22 команды для управления принтерами, драйверами, портами печати и очередями:
Get-Command –Module PrintManagement
- 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-метку.
Добавление драйверов принтера в DriverStore
Модуль PrintManagement имеет функцию Add-PrinterDriver
, которая позволяет установить драйвер принтера из INF-файла. На самом деле эта команда позволяет только добавлять драйверы в автономный образ Windows (как и команда Add-WindowsDriver
команда, которая позволяет интегрировать драйверы в автономные образы Windows).
Чтобы установить драйвер принтера из INF-файла, используйте команду pnputil консольная команда. Загрузите драйверы для вашей модели принтера с сайта производителя и распакуйте их в локальную папку. Затем установите драйвер:
pnputil.exe -i -a "C:\drivers\KYOCERA\KyoClassicUniversalPCL6\OEMsetup.inf"
После установки драйвера в магазине драйверов Windows его необходимо добавить в список доступных драйверов для сервера печати:
Add-PrinterDriver -Name "Kyocera Classic Universaldriver PCL6"
Список доступных драйверов печати:
Get-PrinterDriver
Как установить принтер с помощью PowerShell
Перед созданием нового принтера необходимо добавить порт принтера. Это может быть локальный порт или сетевой порт (для отправки заданий печати на удаленный принтер по сети). Например:
Add-PrinterPort -Name "LocalPort:" -ErrorAction -Verbose
Или укажите IP-адрес удаленного принтера или имя сервера печати в качестве PrinterHostAddress.
Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"
Чтобы создать новый принтер в Windows, укажите имя принтера, драйвер и порт:
Add-Printer -Name "Ricoh IM 2702" -DriverName "Kyocera Classic Universaldriver PCL6" -PortName USB001 -Verbose
Убедитесь, что новый принтер появился в приложении «Панель управления и настройки».
Чтобы переименовать принтер:
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
Команда возвращает имена принтеров, типы (локальный или сетевой), драйвер, порт печати, является ли принтер общим и опубликован ли он в Active Directory.
Большинство команд модуля PrintManagement можно использовать для управления принтерами на удаленных компьютерах (с помощью команды -ComputerName
параметра).
Просмотр списка принтеров, установленных на удаленном компьютере (сервере печати):
Get-Printer -ComputerName rome-prnt1 | Format-List Name,DriverName
Список общих принтеров на компьютере:
Get-Printer -ComputerName rome-prnt1 | where Shared -eq $true | fl Name
Получение принтеров с поддержкой двусторонней печати:
Get-Printer | ForEach-Object { Get-PrintConfiguration -PrinterName $_.Name } | Where-Object { $_.DuplexingMode -ne "OneSided" }
Перечислите все цветные принтеры на компьютере:
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 \\rome-prnt1\HP3027
Перечислите сетевые принтеры, подключенные к компьютеру:
Get-Printer | ?{$_.type -eq 'Connection'}
Удалить определенное подключение сетевого принтера:
Get-Printer -name \\rome-prnt1\HP3027| Remove-Printer -force
Удалите все подключенные сетевые принтеры с компьютера:
Get-Printer | ?{$_.type -eq 'Connection'} | Remove-Printer
Установка принтера по умолчанию в Windows
Windows автоматически устанавливает принтер по умолчанию на последний принтер, на котором пользователь успешно печатал. Чтобы 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
Чтобы удалить принтер, выполните команду:
Remove-Printer -Name "HP LaserJet M1530"
После этого можно удалить драйвер принтера с сервера печати:
Remove-PrinterDriver -Name "HP Universal Printing PCL 6"
Вот некоторые другие полезные команды для системного администратора для управления типичными задачами печати.
Отправить тестовую страницу на печать:
Invoke-CimMethod -MethodName printtestpage -InputObject (Get-CimInstance win32_printer | Where-Object Name -eq "HP LaserJet M1530")
Очистите очередь принтера:
Get-Printer -Name "HP LaserJet M1530" | Get-PrintJob | Remove-PrintJob