Tags: Drucker, PowerShell
PowerShell bietet mehrere Cmdlets, um Drucker zu verwalten. Jene mit dem Verb Get im Namen lassen sich erwartungsgemäß dafür nutzen, installierte Drucker zu ermitteln und ihre Konfiguration zu untersuchen. Dese funktioniert nicht nur lokal, sondern auch für Remote-PCs.
Der gängige Weg, um die Einstellungen eines Druckers einzusehen, führt über Geräte und Drucker in der Systemsteuerung. Dort kann man aus verschiedenen Dialogen und zahlreichen Registerkarten die benötigten Informationen entnehmen. Das ist jedoch relativ umständlich und auf den lokalen Rechner beschränkt.
Installierte Drucker anzeigen mit Get-Printer
In PowerShell kann das Cmdlet Get-Printer alleine viele Fragen beantworten, ohne dass man aufwändige Befehle zusammenstellen muss. Ruft man es ohne Argumente auf, dann gibt es die Liste der installierten Drucker aus.
Get-Printer ermittelt dabei eine Reihe von Eigenschaften für jedes Gerät, die man gezielt ausfiltern kann. Dazu zählen unter anderem Name, Anschluss, Treiber, Zahl der Jobs in der Warteschlange oder der Freigabestatus:
Get-Printer -Name "Samsung ML-3310" | Select Name, PortName, DriverName, JobCount, Shared
In diesem Fall werden die Daten eines einzelnen Druckers mit der Bezeichnung Samsung ML-3310 abgerufen. Möchte man sie von allen installierten Printern bekommen, dann gibt man als Name nur '*' an. Im Gegensatz zur GUI kann PowerShell auch die Drucker auf entfernten PCs abfragen, wenn man diese über den Parameter -ComputerName spezifiziert.
Details zu Druckertreiber abfragen
Die Eigenschaft DriverName gibt erwartungsgemäß nur den Namen des Druckertreibers preis. Möchte man mehr Informationen abrufen, dann kann man dies über das Cmdlet Get-PrinterDriver tun. Dieses verlangt den Namen des Treibers, den man gleich aus dem Output von Get-Printer durchreichen kann:
Get-Printer -name *| %{Get-PrinterDriver -Name $_.DriverName | Select Name, MajorVersion}
In diesem Beispiel interessieren wir uns nur für die Versionsnummer der Software. Get-PrinterDriver liefert aber eine Vielzahl von Eigenschaften, die man anzeigen kann, indem man das Ergebnis des Cmdlet über eine Pipe an Get-Member weiterleitet.
IP-Adresse ermitteln
Ähnlich sieht es aus, wenn man weitergehende Informationen über den Druckeranschluss haben möchte. Hier kann man ebenfalls den PortName aus dem Ergebnis von Get-Printer an ein anderes Cmdlet übergeben, in diesem Fall an Get-PrinterPort:
Get-Printer -name "Samsung*" | %{Get-PrinterPort -Name $_.PortName | Select Name, PrinterHostAddress, PortNumber}
Mit diesem Kommando ermittelt man die Adresse und Portnummer von IP-Druckern, mit denen der Anschluss verbunden ist.
Druckjobs anzeigen
Wenn man schließlich nicht nur die Zahl der anstehenden Print-Jobs, sondern Einzelheiten dazu wissen will, dann hilft hier Get-PrintJob. Um alle Aufträge sämtlicher Drucker anzuzeigen, reicht
Get-Printer | Get-PrintJob
Wenn man den Namen des Druckers in Get-Printer spezifiziert, dann erhält man nur einen Übersicht über dessen Warteschlange. Will man einen Auftrag löschen, dann übergibt man seine ID und den Namen des Druckers an Remove-PrintJob.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
Weitere Links