Drucker mittels Powershell in Windows 8.1 kopieren


Leider gibt es seit Jahren unter Windows keine einfache Möglichkeit einen Drucker zu kopieren. Gemeint sind die Drucker die nach Aufruf von

Control Printers

angezeigt werden.

Dank Powershell ist dies nun unter Windows 8.1 mit den Drucker-Cmdlets  sehr einfach möglich.

Man ruft einfach

Get-Printer | Out-GridView -Title "Quelldrucker auswählen" -PassThru | foreach {Add-Printer -DriverName $_.DriverName -Name "$($_.Name) Kopie" -PortName $_.PortName}

auf und bekommt eine Auswahl der installierten Drucker angezeigt, kann den gewünschten auswählen und klickt auf OK. Man bekommt den neuen Drucker mit dem Namen des alten und dem Anhängsel Kopie angelegt.

Wie immer gibt es aber eine Ausnahme: Leider funktioniert obige Methode nicht bei Druckern die von einem anderen Rechner kommen, die also über die Variante \\Server\Freigabe angesprochen werden. Wird solch ein Drucker versucht zu kopieren, erscheint diese Fehlermeldung:

Add-Printer : Der angegebene Anschluss ist nicht vorhanden. Verwenden Sie "add-printerport", um einen neuen Anschluss hinzuzufügen, oder geben Sie einen vorhandenen
Anschluss an.
In Zeile:1 Zeichen:81
+ Get-Printer | Out-GridView -Title "Quelldrucker auswählen" -PassThru | foreach { …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (MSFT_Printer:ROOT/StandardCimv2/MSFT_Printer) [Add-Printer], CimException
    + FullyQualifiedErrorId : HRESULT 0x80070704,Add-Printer

Wenn man man einen Drucker kopiert hat, fällt auf, dass dieser nicht unbedingt direkt zu sehen ist. In diesem Fall ist dieser Artikel interessant: https://newyear2006.wordpress.com/2014/07/09/gruppierung-bei-windows-druckern-aufheben/

Leider werden bei obiger Methode noch nicht die Einstellungen des zu kopierenden Druckers mitübertragen. D. h. die Kopie des Druckers hat immer die Standardeinstellungen, wie nach einer Neuinstallation des Druckertreibers. Dazu aber ein anderes Mal mehr…

2 Antworten to “Drucker mittels Powershell in Windows 8.1 kopieren”

  1. Leidensgenosse Says:

    Hallo,
    ich vermisse ebenfalls seit Jahren die vermeintlich einfache Funktion, ein Druckerobjekt mal eben mit allen Einstellungen kopieren zu können. Gibt es mittlerweile ein Update zu „Dazu aber ein anderes Mal mehr…“?

    Gruß,
    ein Leidensgenosse

    • newyear2006 Says:

      Hallo Leidensgenosse,

      das Thema ist ziemlich komplex, da man sich mit PrintTickets, XML und vor allem druckerherstellerspezifischen Namespaces auseinandersetzen muss. Es gibt da leider nicht die eine Lösung mit ein paar Zeilen Code. Mir geht es dabei nicht nur ums Kopieren sondern vor allem um das Setzen von Einstellungen. Irgendwann kommt der Artikel, dauert halt noch.

      Bis dahin kann ich aber diese einfache Lösung anbieten:

      # Einstellungen aller Drucker speichern in *.DAT-Dateien speichern:
      Get-Printers | select -ExpandProperty Name | % { $_; rundll32.exe printui.dll,PrintUIEntry /Ss /n „$($_)“ /a „$($_).dat“ }

      # Einstellungen restaurieren:
      Get-Item *.DAT | % { $_; rundll32.exe printui.dll,PrintUIEntry /Sr /n „$($_.Name.Replace(„.DAT“, „“))“ /a „$($_)“ }

      Mit etwas Gefrickel bekommst Du damit aber die gewünschte Funktion hin. Ist jetzt nicht so richtig Powershell-like aber am Ende zählt oft ja auch nur das Ergebnis…

      Schöne Grüße
      newyear2006

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: