Tags: Drucker, PowerShell, Troubleshooting
Zu 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 Druckereigenschaften 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.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Welche lokalen Gruppenrichtlinien sind auf dem Rechner aktiviert?
- ThinPrint 13 unterstützt Microsofts V4-Druckertreiber und MMC
- Resolve-DnsName: nslookup für PowerShell
- Windows-Sicherheit öffnet sich nicht: Store-App mit PowerShell zurücksetzen
- Updates in WSUS importieren mit Internet Explorer oder PowerShell
Weitere Links