PowerShell zarządzający drukarkami i sterownikami drukowania w Windows 10 / Server 2016

W poprzednim artykule przyjrzeliśmy się oldskulowym skryptom vbscript, których można używać do zarządzania drukarkami i drukowaniem we wszystkich wersjach systemu Windows, począwszy od systemu Windows XP. Dzisiaj przyjrzymy się typowym poleceniom do tworzenia, usuwania drukarek, portów i sterowników drukarek w systemie Windows za pomocą programu PowerShell. Te metody zarządzania drukarką mogą być stosowane w nowoczesnych systemach operacyjnych - Windows 10, 8.1 i Windows Server 2012 R2 / 2016/2019.


Treść

  • Moduł PowerShell: PrintManagement
  • Zainstaluj sterownik druku w repozytorium sterowników
  • Zainstaluj nową drukarkę za pomocą programu PowerShell
  • Wyświetl listę drukarek na serwerze wydruku za pomocą programu PowerShell
  • Podłącz drukarkę sieciową z PowerShell
  • Usuwanie drukarki za pomocą PowerShell

Moduł PowerShell: PrintManagement

Wraz z wydaniem systemu Windows 8.1 i Windows Server 2012 R2 firma Microsoft wydała nową wersję Powerhell 4.0 (część Windows Management Framework 4.0), która znacznie rozszerzyła listę poleceń cmdlet do zarządzania serwerem wydruku opartym na systemie Windows. Pełną listę poleceń cmdlet do zarządzania drukarkami, sterownikami i kolejkami wydruku dostępnymi w module PrintManagement w systemie Windows 10 (PoSh v5) można wyświetlić za pomocą polecenia:
Get-Command -Moduł PrintManagement

Moduł PrintManagement zapewnia 22 poleceń cmdlet programu PowerShell do zarządzania drukarkami, sterownikami, portami wydruku i kolejkami:

  • Dodaj drukarkę - dodaj (zainstaluj) nową drukarkę;
  • Add-PrinterDriver - zainstaluj nowy sterownik druku;
  • Add-PrinterPort - utwórz port drukowania;
  • Get-PrintConfiguration - wyświetla ustawienia drukowania drukarki;
  • Pobierz drukarkę - wyświetla listę drukarek zainstalowanych na komputerze;
  • Get-PrinterDriver - wyświetl listę zainstalowanych sterowników druku;
  • Get-PrinterPort - wyświetla listę portów drukowania;
  • Get-PrinterProperty - pokazuje właściwości drukarki;
  • Get-PrintJob - uzyskaj listę zadań drukowania drukarki;
  • Read-PrinterNfcTag - pobierz informacje o drukarce ze znacznika NFC;
  • Usuń drukarkę - usuń drukarkę;
  • Remove-PrinterDriver - usuń sterownik drukarki;
  • Remove-PrinterPort - usuń port drukarki;
  • Remove-PrintJob - usuń zadanie drukowania z drukarki;
  • Zmień nazwę drukarki - zmień nazwę drukarki;
  • Restart-PrintJob - ponownie uruchom zadanie drukowania;
  • Resume-PrintJob - rozpocznij wstrzymane zadanie
  • Set-PrintConfiguration - konfiguracja konfiguracji drukarki;
  • Ustaw drukarkę - zaktualizuj konfigurację drukarki;
  • Set-PrinterProperty - zmiana właściwości drukarki;
  • Suspend-PrintJob - wstrzymaj zadanie drukowania;
  • Write-PrinterNfcTag - zapisz informacje do znacznika NFC.

Szczegółowe informacje o składni dla konkretnego polecenia można uzyskać w następujący sposób:

Uzyskaj-Pomoc-Szczegółowo

Przykłady używania poleceń:

Uzyskaj pomoc-Przykłady

Spójrzmy na kilka przykładów typowych scenariuszy zarządzania drukarką w Windows 10 z PowerShell..

Zainstaluj sterownik druku w repozytorium sterowników

Aby wyświetlić listę sterowników druku zainstalowanych w repozytorium sterowników systemu Windows:

Get-PrinterDriver

W systemie skonfigurowaliśmy nowy sterownik druku, na przykład HP Universal Printing PCL 6. Zgodnie z dokumentacją polecenie programu PowerShell, aby dodać sterownik, powinno wyglądać tak:

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

Jednak podczas próby zainstalowania sterownika w ten sposób pojawia się błąd:

Add-PrinterDriver: Jeden lub więcej określonych parametrów dla tej operacji ma niepoprawną wartość. W wierszu: 1 znak: 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

Okazuje się, że sterownik z pliku inf można dodać tylko wtedy, gdy znajduje się już w repozytorium sterowników DriverStore (więcej informacji na temat repozytorium można znaleźć tutaj). Okazuje się, że za pomocą polecenia Add-PrinterDriver nie można zainstalować sterownika, który nie znajduje się w repozytorium sterowników systemu. Aby zainstalować sterownik w DriverStore, możesz użyć:

  • skrypt vbs z poprzedniego artykułu;
  • Utility pnputil.exe. Format to: pnputil.exe -i -a C: \ Distr \ HP-pcl6-x64 \ hpcu118u.inf (zainstaluj określony sterownik drukarki) lub pnputil.exe -i -a C: \ Distr \ HP-pcl6-x64 \ *. inf (zainstaluj wszystkie sterowniki znalezione w plikach inf określonego katalogu);
  • Dodaj polecenie cmdlet WindowsDriver, aby zintegrować sterowniki z obrazem systemu Windows offline.

Po dodaniu sterownika drukarki do pamięci należy dodać go do listy dostępnych serwerów wydruku.

Add-PrinterDriver -Name „HP Universal Printing PCL 6”

Wskazówka. Skąd mam wiedzieć, co należy podać w polu z nazwą sterownika drukarki podczas instalacji sterownika za pomocą programu PowerShell? Podana nazwa sterownika drukarki musi dokładnie pasować do wewnętrznej nazwy systemu, w przeciwnym razie podczas instalacji pojawi się błąd. Możesz znaleźć poprawną nazwę sterownika za pomocą polecenia get-printerdriver w systemie, w którym ten sterownik jest już zainstalowany, lub ręcznie sprawdzając plik .inf sterownika.

Zainstaluj nową drukarkę za pomocą programu PowerShell

Utwórz port ip do drukowania na drukarce sieciowej (tutaj możesz podać zarówno adres IP drukarki sieciowej, jak i nazwę zdalnego serwera wydruku):

Dodaj-PrinterPort -Nazwa „IP_192.168.10.26” -PrinterHostAddress „192.168.10.26” 
Przed dodaniem portu możesz sprawdzić, czy istnieje:

$ 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”

Za pomocą następującego polecenia utworzymy nową drukarkę w systemie i opublikujemy ją (udostępnimy):
Dodaj drukarkę -Name hp2050_Office1_Buh -DriverName „Sterownik klasy HP Deskjet 2050 J510 series” -PortName IP_192.168.10.26-Udostępniony -ShareName „hp2050_1_BUh” -Publikowane

Uwaga. Pamiętaj, że aby wykonać tę samą operację w przypadku korzystania ze skryptów VBS (Drukowanie skryptów administratora), musisz uruchomić dwa różne polecenia.
Aby zmienić nazwę drukarki, wystarczy uruchomić polecenie:

Zmień nazwę drukarki - nazwa „hp2050_Office1_Buh” -Nowa nazwa „hp2050_Salary”

Po wykonaniu tych poleceń w systemie pojawi się nowa udostępniona drukarka jako hp2050_Office1_Buh.

Wyświetl listę drukarek na serwerze wydruku za pomocą programu PowerShell

Podamy pełną listę drukarek zainstalowanych na tym komputerze:

Pobierz drukarkę

Jak widać, polecenie pokazuje nazwę drukarki, typ (lokalny lub sieciowy), sterownik, port wydruku, czy drukarka jest współużytkowana, a drukarka opublikowana w AD.

Większość poleceń cmdlet modułu PrintManagement można wykorzystać do wyświetlania stanu oraz zarządzania drukarkami, sterownikami i kolejkami wydruku na komputerach zdalnych. Nazwa zdalnego komputera lub serwera jest określona jako argument parametru -Nazwa komputera.

Za pomocą programu PowerShell można uzyskać informacje o zainstalowanych drukarkach na komputerze zdalnym (serwerze wydruku), w tym celu uruchom polecenie:

Get-Printer -ComputerName msk-prnt1 | Nazwa listy formatów, nazwa sterownika

Aby wyświetlić listę tylko drukarek udostępnionych, użyj polecenia:

Get-Printer -ComputerName msk-prnt1 | gdzie Shared -eq $ true | nazwa fl

Podłącz drukarkę sieciową z PowerShell

Aby podłączyć drukarkę z serwera wydruku, użyj polecenia:

Dodaj drukarkę-nazwa połączenia \\ msk-prnt1 \ HPCL3020

Windows 10 używa ostatniej drukarki, która zostanie wydrukowana jako drukarka domyślna, jeśli chcesz domyślnie używać drukarki stałej, uruchom polecenie:

Set-ItemProperty -Path "HKCU: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows" -Name "LegacyDefaultPrinterMode" -Wartość 1 -Force

Użyj następujących poleceń, aby ustawić domyślną drukarkę:

$ wsnObj = Nowy obiekt-COM WScript.Network
$ wsnObj.SetDefaultPrinter (% PrinterName%)

Usuwanie drukarki za pomocą PowerShell

Aby usunąć drukarkę, musisz uruchomić następujące polecenie PowerShell:

Remove-Printer -Name "hp2050_Office1_Buh"

Możesz usunąć określony sterownik za pomocą polecenia cmdlet Remove-PrinterDriver:

Remove-PrinterDriver -Name „HP Universal Printing PCL 6”