Управление принтерами и драйверами с помощью PowerShell в Windows 10/Server 2016
В предыдущей статье мы рассмотрели сценарии VBS старой школы, которые можно использовать для управления принтерами и операциями печати во всех версиях Windows, начиная с Windows XP. Сегодня мы рассмотрим типичные команды для установки, управления и удаления принтеров, портов печати, драйверов и очередей с помощью PowerShell. Эти способы управления принтерами из PowerShell CLI можно использовать в современных операционных системах — Windows 10/8.1 и Windows Server 2019/2016/2012 R2.
Модуль PowerShell: PrintManagement
Одновременно с выпуском Windows 8.1 и Windows Server 2012 R2 компания Microsoft выпустила новую версию PowerShell 4.0 (часть Windows Management Framework 4.0), которая значительно расширила список командлетов управления сервером печати на базе Windows. Вы можете получить полный список командлетов управления печатью, драйверами и очередью печати, доступных в модуле PrintManagement в Windows 10 (PowerShell v5), с помощью следующей команды:
Get-Command -Module PrintManagementAdd-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-тег.
Чтобы получить подробную информацию о синтаксисе любой команды, используйте следующую команду:
Get-Help <cmdlet_name> -DetailedПримеры использования команд:
Get-Help < cmdlet_name> -ExamplesДавайте рассмотрим несколько примеров типичных задач управления принтером с помощью PowerShell в Windows 10.
Добавление драйверов принтера в DriverStore
Чтобы вывести список драйверов печати, установленных в Windows DriverStore:
Get-PrinterDriverЗатем установите в систему новый драйвер принтера. Например, вы хотите установить популярный драйвер печати «HP Universal Printing PCL 6». Согласно документации, команда PowerShell для добавления драйвера печати должна быть следующей:
Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:\Distr\HP-pcl6-x64\hpcu118u.inf"Однако при попытке установить драйвер таким способом появляется следующее сообщение об ошибке:
Add-PrinterDriver : One or more specified parameters for this operation has an invalid value.At line:1 char:1+ Add-PrinterDriver -Name “HP Universal Printing PCL 6” -InfPath “C:\Di …+ ~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo : InvalidArgument: (MSFT_PrinterDriver:ROOT/StandardCimv2/MSFT_PrinterDriver) [Add-PrinterDriver], CimException + FullyQualifiedErrorId : HRESULT 0x80070057,Add-PrinterDriverПолучается, что драйвер из INF-файла можно установить только в том случае, если он уже существует в DriverStore. Похоже, что вы не можете установить драйвер печати, которого нет в хранилище драйверов, с помощью команды Add-PrinterDriver. Чтобы добавить драйвер в DriverStore, вы можете использовать:
скрипт VBS, описанный в предыдущей статье;
утилита — pnputil.exe. Команда может выглядеть следующим образом:
pnputil.exe -i -a C:\Distr\HP-pcl6-x64\hpcu118u.inf(устанавливает конкретный драйвер принтера) или
pnputil.exe -i -a C:\Distr\HP-pcl6-x64\*.inf(устанавливает все драйверы, найденные в INF-файлах в указанный каталог);
командлет Add-WindowsDriver, позволяющий интегрировать драйверы в автономный образ Windows.
После добавления драйвера принтера в репозиторий драйверов необходимо установить его на принт-сервер:
Add-PrinterDriver -Name "HP Universal Printing PCL 6"Совет. Как узнать, что следует указывать в поле имени драйвера печати при установке драйвера через PowerShell? Указанное имя драйвера печати должно точно совпадать с его внутренним системным именем, иначе при установке драйвера возникнет ошибка. Правильное имя драйвера можно узнать с помощью команды get-printerdriver на компьютере, где этот драйвер печати уже установлен, или вручную изучив INF-файл драйвера.
Как установить принтер с помощью PowerShell?
Создайте IP-порт для сетевого принтера (здесь можно указать как IP-адрес сетевого принтера, так и имя удаленного сервера печати):
Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"Прежде чем добавлять новый IP-порт печати, вы можете проверить, существует ли он:
$portName = "IP_192.168.10.26"
$checkPortExists = Get-Printerport -Name $portname -ErrorAction SilentlyContinue
if (-not $checkPortExists) {
Add-PrinterPort -name $portName -PrinterHostAddress "192.168.10.26"
}С помощью следующей команды мы установим и расшарим новый принтер на компьютере:
Add-Printer -Name hp3027_Office1_Buh -DriverName "HP LaserJet M3027 MFP PCL6 Class Driver" -PortName IP_192.168.10.26 -Shared -ShareName "hp3027_1_BUh" -PublishedПримечание. Обратите внимание, что для выполнения одной и той же операции (установки и совместного использования принтера) с использованием сценариев VBS (сценариев администратора печати) необходимо выполнить две разные команды.
После выполнения этих команд в системе появится новый общий принтер с именем «hp3027_Office1».
Чтобы переименовать принтер, просто выполните команду:
Rename-Printer -Name "hp3027_1_Buh" -NewName "hp3027_F1_Salary"Список установленных принтеров на сервере печати
Выведем полный список принтеров, установленных на этом компьютере:
Get-PrinterКак видите, команда показывает имя принтера, тип (локальный или сетевой), драйвер, порт печати, а также является ли принтер общим и опубликованным в Active Directory.
Большинство командлетов PrintManagement можно использовать для просмотра состояния и управления принтерами, драйверами и очередями печати на удаленных компьютерах (серверах печати). Имя удаленного компьютера или сервера указывается в качестве аргумента параметра -ComputerName.
Получить информацию об установленных принтерах на удаленном компьютере можно с помощью команды PowerShell:
Get-Printer -ComputerName rome-prnt1 | Format-List Name,DriverNameЧтобы отобразить только список общих принтеров, используйте команду:
Get-Printer -ComputerName rome-prnt1 | where Shared -eq $true | fl NameПодключение к сетевому принтеру с помощью PowerShell
Чтобы подключить общий принтер с сервера печати, используйте команду:
Add-Printer -ConnectionName \\rome-prnt1\HP3027Windows 10 использует последний принтер, который использовался для печати, в качестве принтера по умолчанию. Если вы хотите использовать фиксированный принтер по умолчанию, выполните команду:
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 -ForceЧтобы установить принтер по умолчанию, вы можете использовать следующие команды:
$wsnObj = New-Object -COM WScript.Network
$wsnObj.SetDefaultPrinter(%PrinterName%)Как удалить принтер с помощью PowerShell?
Чтобы удалить принтер, вам необходимо запустить следующую команду PowerShell:
Remove-Printer -Name "hp3027_L1_O1"Вы можете удалить конкретный драйвер с помощью командлета Remove-PrinterDriver:
Remove-PrinterDriver -Name "HP Universal Printing PCL 6"







