PowerShell управление на принтери и драйвери за печат в Windows 10 / Server 2016

В предишна статия разгледахме старите училища vbscripts, които могат да се използват за управление на принтери и печат във всички версии на Windows, като се започне от Windows XP. Днес ще разгледаме типичните команди за създаване, премахване на принтери, портове и драйвери за печат в Windows с помощта на PowerShell. Тези методи за управление на принтера могат да се използват в съвременни операционни системи - Windows 10, 8.1 и Windows Server 2012 R2 / 2016/2019.


Съдържание:

  • Модул PowerShell: Управление на печата
  • Инсталирайте драйвера за печат в хранилището на драйвера
  • Инсталирайте нов принтер с помощта на PowerShell
  • Списък на принтери на сървър за печат с помощта на PowerShell
  • Свържете мрежов принтер от PowerShell
  • Премахване на принтер с помощта на PowerShell

Модул PowerShell: Управление на печата

С пускането на 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 Print Management

Модулът 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 10 от PowerShell..

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

За да изброите драйверите за печат, които са инсталирани в хранилището на драйвера за Windows:

Get-PrinterDriver

Ние настроихме нов драйвер за печат в системата, например, HP Universal Printing PCL 6. Според документацията командата PowerShell за добавяне на драйвер трябва да е така:

Add-PrinterDriver -Име "HP Universal Printing PCL 6" -InfPath "C: \ Distr \ HP-pcl6-x64 \ hpcu118u.inf"

Въпреки това, когато се опитате да инсталирате драйвера по този начин, се появява грешка:

Add-PrinterDriver: Един или повече определени параметри за тази операция имат невалидна стойност. На ред: 1 char: 1 + Add-PrinterDriver -Име "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.Търсейки. Форматът е: 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 -Име "HP Universal Printing PCL 6"

съвет. Как да разбера какво да посоча в полето с името на драйвера за печат при инсталиране на драйвера през PowerShell? Посоченото име на драйвера за печат трябва точно да съвпада с неговото вътрешно име на системата, в противен случай ще се появи грешка по време на инсталирането. Можете да разберете правилното име на драйвера, като използвате командата получите-printerdriver в система, в която този драйвер вече е инсталиран, или чрез ръчно изследване на драйвера .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
ако (-не $ checkPortExists)
Add-PrinterPort -name $ portName -PrinterHostAddress "192.168.10.26"

Използвайки следната команда, ще създадем нов принтер в системата и ще я публикуваме (ще я споделим):
Add-Printer -Name hp2050_Office1_Buh -DriverName "HP Deskjet 2050 J510 серия драйвери за клас" -PortName IP_192.168.10.26 -Поделен -ShareName "hp2050_1_BUh" -Публикуван

забележка. Имайте предвид, че за да извършите същата операция в случай на използване на vbs скриптове (Печат на администраторски скриптове), ще трябва да стартирате две различни команди.
За да преименувате принтера, просто изпълнете командата:

Преименуване-принтер -име "hp2050_Office1_Buh" -NewName "hp2050_Sallar"

След приключване на тези команди, в системата ще се появи нов споделен принтер като hp2050_Office1_Buh.

Списък на принтери на сървър за печат с помощта на PowerShell

Ще изброим пълния списък с принтери, инсталирани на този компютър:

Get-Printer

Както можете да видите, командата показва името на принтера, типа (локален или мрежов), драйвер, порт за печат, дали принтерът е споделен и принтерът е публикуван в AD.

Повечето командлети на модула PrintManagement могат да се използват за преглед на състоянието и управление на принтери, драйвери и опашки за печат на отдалечени компютри. Името на отдалечения компютър или сървър е посочено като аргумент на параметъра -име_на_компютъра.

Използвайки PowerShell, можете да получите информация за инсталирани принтери на отдалечен компютър (сървър за печат), за да направите това, изпълнете командата:

Get-Printer -ComputerName msk-prnt1 | Име на формат-списък, име на водач

За да изброите само споделени принтери, използвайте командата:

Get-Printer -ComputerName msk-prnt1 | където споделено -eq $ true | fl Име

Свържете мрежов принтер от PowerShell

За да свържете принтера от сървъра за печат, използвайте командата:

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

Windows 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:

Премахване-Принтер -Име „hp2050_Office1_Buh“

Можете да премахнете конкретен драйвер с командлета Remove-PrinterDriver:

Remove-PrinterDriver -Име "HP Universal Printing PCL 6"