Drucker (remote) über PowerShell installieren


    Tags: , ,

    Drucker freigebenMuss man häufig Drucker hin­zufügen, etwa beim Manage­ment der Print-Server, dann kann es effi­zienter sein, dies mit Power­Shell statt über die MMC-basierte Druck­ver­waltung tun. Einer durch­gängigen Auto­matisierung dieses Vor­gangs stehen nur der Down­load und das Ent­packen der Treiber entgegen.

    Die grafische Druck­verwaltung ist ebenfalls in der Lage, Drucker auf entfernten Rechnern zu admini­strieren. Dazu gehört auch die Möglichkeit, neue Ports einzurichten, Treiber hinzu­zufügen und Drucker anzulegen.

    Anstatt sich durch die GUI des MMC-Tools zu klicken, kann man zu PowerShell greifen. Alle Cmdlets für die erforderlichen Schritte unterstützen den Parameter ComputerName, so dass man Drucker einfach remote erstellen kann.

    Treiber auf Windows Server 2019 laden

    Als Hürde erweist sich dabei allerdings, dass Windows Server 2019 praktisch keine Druckertreiber mehr enthält. Nutzt man diese Version des Betriebs­systems für einen Print-Server, dann muss man die benötigten Treiber erst auf das System bringen.

    Die Quelle für Druckertreiber wird entweder der Microsoft Update Catalog oder die Website des Hardware-Herstellers sein. Microsofts Katalog ist für die interaktive Nutzung gedacht und sperrt sich daher gegen einen Download per Script oder Kommando­zeile.

    Einer durchgängigen Automatisierung der Drucker­installation steht zudem entgegen, dass PowerShell nicht über die Mittel verfügt, die .cab-Datei mit den Treibern zu entpacken und diese in den Driver Store zu übertragen.

    Dafür muss man auf herkömmliche CLI-Tools zurückgreifen. Das gilt aber auch dann, wenn man die interaktive Variante über die grafische Drucker­verwaltung bevorzugt.

    Treiber auf Server kopieren und entpacken

    Im ersten Schritt nach dem Herunterladen des Treiber-Pakets kopiert man dieses auf den entfernten Print-Server. Läuft dieser unter Server Core, dann erweist sich das Admin Center für diese Aufgabe als hilfreich.

    Anschließend öffnet man eine Remote-Sitzung mit Enter-PSSession und wechselt in das Verzeichnis, in dem sich die .cab-Datei befindet. Dort entpackt man diese mit dem Expand-Utility, im folgenden Beispiel in das Unter­verzeichnis driver:

    expand.exe .\drivers_15de7944aba1cf37d7e561875c43a8e32e1180bd.cab -F:* .\driver\

    CAB-Archiv mit Druckertreiber in einer Remote-PS-Session entpacken

    Im nächsten Schritt entnimmt man der .inf-Datei den genauen Namen des Druckers, den man nachher für das Hinzufügen des Treibers benötigt. Dazu kann man mit Select-String nach einem Teil der Zeichenkette suchen:

    Get-Content .\prnsacl1.inf | Select-String "ML-3300"

    Im diesem Beispiel wollen wir die volle Bezeichnung des Samsung-Druckers der ML-3300-Serie ermitteln.

    Druckertreiber in den Store übertragen

    Danach überträgt man die entpackten Treiber in den lokalen Store:

    pnputil.exe -a prnsacl1.inf

    Erst jetzt kommt PowerShell ins Spiel. Da wir hier bereits in einer Remote-Session sind, können wir die Cmdlets gleich lokal ausführen und benötigen den Parameter ComputerName nicht.

    Druckertreiber hinzufügen

    Um zunächst den Druckertreiber hinzufügen, braucht man den weiter oben eruierten Namen:

    Add-PrinterDriver -Name "Samsung ML-3300 Series Class Driver"

    Druckertreiber in den Store kopieren und mit PowerShell hinzufügen

    Mit

    Get-PrinterDriver

    kann man sich überzeugen, ob der Treiber nun im System verfügbar ist.

    Anschluss für Netzwerkdrucker erzeugen

    Jeder Drucker braucht bekanntlich einen Anschluss. Falls der gewünschte für den jeweiligen Drucker noch nicht existiert, kann man ihn nun erstellen. Wenn man sich vorher vergewissern möchte, ob ein bestimmter Port bereits vorhanden ist, dann zeigt

    Get-PrinterPort

    dies an. Für einen Netzwerkdrucker könnte man einen TCP/IP-Port so erzeugen:

    Add-PrinterPort -Name "IP_192.168.0.99" -PrinterHostAddress "192.168.0.99"

    TCP/IP-Anschluss erzeugen mit Add-PrinterPort

    Drucker hinzufügen und konfigurieren

    Nun sind die Voraussetzungen gegeben, um den Drucker hinzufügen:

    Add-Printer -Name "Samsung ML-3310" -DriverName "Samsung ML-3300 Series Class Driver" `
    -PortName "IP_192.168.0.99"

    Wie man sehen kann, braucht man hier erneut den Namen des Treibers sowie jenen des vorhin erzeugten Anschlusses. Die Bezeichnung für den Printer kann man frei vergeben. Möchte man gleich eine größere Zahl an Druckern anlegen, dann liegt es nahe, ihre Daten aus einer CSV-Datei auszulesen und an Add-Printer zu übergeben.

    Drucker mit Add-Printer hinzufügen und mit Set-Printer anpassen

    In der Regel wird man den Drucker im Netzwerk freigeben und im Active Directory registrieren wollen. Das hätte man schon über die entsprechenden Parameter von Add-Printer tun können, lässt sich aber leicht mit Set-Printer nachholen:

    Set-Printer -Name "Samsung ML-3310" -Location "Redaktion" -Published $true -Shared $true

    Dieser Aufruf gibt den Drucker unter seinem Namen frei, weil der Parameter ShareName nicht spezifiziert wurde. Published trägt den Printer in das Active Directory ein. Zusätzlich legt Location den Ort fest, an dem der Drucker steht, typischer­weise ist das der Name einer Abteilung, eine Raumnummer oder dergleichen.

    Mit Comment könnte man noch ergänzende Informationen hinterlegen. Außerdem lässt sich damit auch die Zeitspanne (StartTime und UntilTime) definieren, während der ein Drucker verfügbar ist.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut

    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links