Druckerstatus anzeigen und Druckaufträge verwalten mit PowerShell

    GerZu den PowerShell-Erweiterungen in Windows 8 und Server 2012 gehört auch ein Modul für das Management von Druckern. Es enthält Cmdlets, mit denen sich die Konfiguration von Printern verändern oder abfragen lässt oder mit denen man Printjobs steuern kann.

    Die Nutzung der Kommandozeile empfiehlt sich weniger, um einzelne Druckaufträge anzuhalten oder abzubrechen. Das lässt sich über die GUI zur Jobsteuerung meist einfacher erledigen. PowerShell ist aber hilfreich, wenn man sich für das Troubleshooting einen Überblick über mehrere Drucker verschaffen will und eine größere Zahl von Jobs steuern möchte.

    Druckerstatus ausgeben

    Um eine Liste der installierten Drucker abzurufen, bedient man sich des Cmdlets Get-Printer. Die von ihm zurückgegebenen Objekte enthalten eine Reihe von Eigenschaften, die Aufschluss über Name, Treiber oder Status des Printers geben.

    Get-Printer | select Name, Location, PrinterStatus | fl

    Dieser Aufruf liest alle auf einem PC verfügbaren Drucker aus und zeigt ihren Namen, ihren Ort und ihren Status in Listenform an. Wenn man beispielsweise den Status aller Drucker kennen möchte, deren Ort Produktion ist, dann kann man diesen so erfahren:

    Get-Printer | where Location -LIKE "Produktion" | select Name, Location, PrinterStatus | fl

    Will man sich einen Überblick verschaffen, welche Drucker offline sind, dann hilft der Befehl:

    Get-Printer | where PrinterStatus -LIKE "Offline*"| select Name, Location | fl

    Eigenschaften von Druckern ändern

    Man muss sich nicht nur auf das Auslesen der Drucker­eigenschaften beschränken, vielmehr kann man sie mit Hilfe von Set-Printer auch verändern:

    Get-Printer | where Name -LIKE "*LaserJet*" | Set-Printer -Location "Buchhaltung"

    Vorausgesetzt man hat administrative Rechte, dann ändert dieses Beispiel den Ort für alle Printer, deren Name den Begriff LaserJet enthält, auf Buchhaltung. Entsprechend ließe sich über die Parameter -Comment die Beschreibung oder über -Name die Bezeichnung anpassen.

    Standard für Papiergröße festlegen

    Eine weitergehende Konfiguration lässt sich mit Set-PrinterConfiguration erreichen, wobei sie weniger die Einstellungen für das Gerät, sondern für Druckaufträge betreffen. So lässt sich damit etwa die Papiergröße vorgeben oder der Duplexmodus steuern. Folgender Befehl setzt für alle Drucker die Papiergröße standardmäßig auf A4, alternativ könnte man Letter für das amerikanische Format wählen:

    Get-Printer | Set-PrintConfiguration -PaperSize A4

    Um sich zu überzeugen, ob die Papiergröße wie gewünscht eingestellt wurde, kann man

    Get-Printer | Get-PrintConfiguration | select PrinterName, PaperSize

    Druckaufträge löschen oder anhalten

    Ein häufiges Anliegen beim Drucker-Management besteht im Anzeigen, Anhalten, Fortsetzen oder Abbrechen von Druckaufträgen. Ersteres erfolgt über das Cmdlet Get-PrintJob:

    Get-Printer | Get-PrintJob | select UserName, TotalPages, JobStatus, Position

    Dieses Beispiel zeigt alle Druckaufträge aller Drucker an und informiert, wer den Job abgeschickt hat, wie viele Seiten er umfasst, welchen Status er hat und an welcher Position in der Warteschlange er steht.

    Um Druckaufträge zu löschen, verwendet man das Cmdlet Remove-PrintJob. Wenn man mit Hilfe von Get-PrintJob herausgefunden hat, dass ein bestimmter Auftrag für den Drucker mit dem Namen HP LaserJet die ID 4 hat, dann kann man folgenden Befehl abbrechen:

    Remove-PrintJob -PrinterName "HP LaserJet" -ID 4

    Möchte man dagegen alle Druckaufträge löschen, die von einem bestimmten Benutzer an irgendeinen Drucker geschickt wurden, dann geht das so:

    Get-Printer | Get-PrintJob | where UserName -LIKE <Benutzername> | Remove-PrintJob

    Das Anhalten oder Fortsetzen von Druckaufträgen funktioniert nach dem gleichen Muster, nur dass dann an die Stelle von Remove-PrintJob die Cmdlets Suspend-PrintJob oder Resume-PrintJob treten.

    Für das Beheben von Druckproblemen erweist es sich als Vorteil, dass sich die hier vorgestellten Cmdlets über den Parameter -ComputerName auch auf Remote-PCs anwenden lassen, so dass man auch deren lokale Drucker verwalten kann.

    Keine Kommentare