У попередній статті ми розглянули олдскульний vbs скрипти, які можна було використовувати для управління принтерами і печаткою у всіх версіях Windows, починаючи з Windows XP. Сьогодні ж ми розглянемо типові команди для створення, видалення принтерів, портів і драйверів друку в Windows за допомогою PowerShell. Розглянуті методи управління принтерами можна використовувати в сучасних ОС – Windows 10, 8.1 і Windows Server 2012 R2 / 2016/2019.

Модуль PowerShell: PrintManagement

Разом з виходом Windows 8.1 і Windows Server 2012 R2 Microsoft випустила нову версію PowerShell 4.0 (Входить до складу Windows Management Framework 4.0), в якому був істотно розширено список командлетів з управління сервером друку на базі Windows. Повний список командлетів, з управління принтерами, драйверами і чергами друку, доступних в модулі PrintManagement на Windows 10 (PoSh v5) можна вивести командою:
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.

Детальну інформацію про синтаксис конкретної команди можна отримати так:

Get-Help <имя_командлета > -Detailed

Приклади використання команд:

Get-Help <имя_командлета > -Examples

Розглянемо кілька прикладів типових сценаріїв управління принтерами в Windows 10 з PowerShell.

Установка драйвера друку в сховище драйверів

Щоб вивести список драйверів друку, який встановлено в сховище драйверів Windows:

Get-PrinterDriver

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

Статуту в системі новий драйвер друку, наприклад, HP Universal Printing PCL 6. Згідно з документацією, команда PowerShell для додавання драйвера повинна бути такою:

Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:DistrHP-pcl6-x64hpcu118u.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

Add-PrinterDriver: Один або кілька зазначених параметрів для цієї операції мають недійсне значення

Виявляється, драйвер з inf файлу можна додати тільки в тому випадку, якщо він вже перебуває в сховище драйверів DriverStore (докладніше про сховище можна почитати тут). Виходить, що за допомогою команди Add-PrinterDriver встановити драйвер, відсутній в сховище драйверів системи не можна. Для установки драйвера в DriverStore можна скористатися:

  • vbs скриптом з попередньої статті;
  • утилітою pnputil.exe. Формат такої: pnputil.exe -i -a C:DistrHP-pcl6-x64hpcu118u.inf (Встановити конкретний драйвер принтера) або pnputil.exe -i -a C:DistrHP-pcl6-x64*.inf (Встановить всі драйвера, знайдені в inf файлах вказаного каталогу);pnputil.exe установка драйвера друку з inf файлу
  • Командлети Add-WindowsDriver, що дозволяє інтегрувати драйвера в оффлайн образ Windows.

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

Add-PrinterDriver -Name "HP Universal Printing PCL 6"
Add-PrinterDriver установка драйвера друку hp з powershell

Порада. Як дізнатися, що потрібно вказувати в полі з ім’ям драйвера друку при установці драйвера через PowerShell? Визначене ім’я драйвера друку повинно в точності збігатися з його внутрішнім системним ім’ям, інакше при установці з’явиться помилка. Дізнатися правильне ім’я драйвера можна за допомогою команди отримати драйвер принтера – на системі, в якій цей драйвер вже встановлений, або шляхом ручного дослідження .inf файлу драйвера.визначаємо ім'я драйвера принтера по inf файлу

Установка нового принтера за допомогою PowerShell

Створимо ip порт для друку на мережному принтері (тут можна вказати як IP адреса мережевого принтера, так і віддалених назв принт-сервера):

Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26" 
Перед додаванням порту ви можете перевірити, чи існує він:

$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 hp2050_Office1_Buh -DriverName "HP Deskjet 2050 J510 series Class Driver" -PortName IP_192.168.10.26 -Shared -ShareName "hp2050_1_BUh" –Published

Примітка. Зауважте, що для виконання цієї ж операції в разі використання vbs скриптів (Printing Admin scripts) знадобиться виконати дві різні команди.Add-Printer установка нового принтера з powershell
Щоб перейменувати принтер досить виконати команду:

Rename-Printer -Name "hp2050_Office1_Buh" -NewName " hp2050_Salary"

Після виконання зазначених команд в системі з’явиться новий принтер із загальним доступом під ім’ям hp2050_Office1_Buh.установка нового принтера в windows 10 з командного рядка powershell

Виведення списку принтерів на сервері друку за допомогою PowerShell

Виведемо повний список принтерів, встановлених на даному комп’ютері:

Get-Printer

Як ви бачите, команда показує ім’я принтера, тип (локальний або мережевий), драйвер, порт друку, чи відкритий до принтера загальний доступ і опублікований чи принтер в AD.

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

Більшість командлетів модуля PrintManagement можна використовувати для перегляду стану і керування прінетрамі, драйверами і чергами друку на віддалених комп’ютерах. Ім’я віддаленого комп’ютера або сервера вказується в якості аргументу параметра Ім’я комп’ютера.

За допомогою PowerShell ви можете отримати інформацію про встановлені принтерах на віддаленому комп’ютері (принт-сервері), для цього виконайте команду:

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

Щоб вивести тільки список принтерів із загальним доступом, використовуйте команду:

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

Підключення мережевого принтера з PowerShell

Щоб підключити принтер з сервера друку, використовуйте команду:

Add-Printer -ConnectionName \msk-prnt1HPCL3020

Windows 10 використовує останній принтер, на який виконувалася друк в якості принтера за замовчуванням, якщо ви хочете використовувати фіксований принтер за замовчуванням, виконайте команду:

Set-ItemProperty -Path "HKCU:SOFTWAREMicrosoftWindows NTCurrentVersionWindows" -Name "LegacyDefaultPrinterMode" -Value 1 –Force

Щоб встановити принтер за замовчуванням використовуйте наступні команди:

$wsnObj = New-Object -COM WScript.Network
$wsnObj.SetDefaultPrinter(%PrinterName%)

Видалення принтера за допомогою PowerShell

Щоб видалити принтер, потрібно виконати таку команду PowerShell:

Remove-Printer -Name "hp2050_Office1_Buh"

Ви можете видалити конкретний драйвер за допомогою командлета Remove-PrinterDriver:

Remove-PrinterDriver -Name "HP Universal Printing PCL 6"

Leave a Reply

Your email address will not be published. Required fields are marked *