Drucker auslesen mit Get-Printer in PowerShell
Drucker werden uns doch noch ein wenig erhalten bleiben. In manchen PowerShell Scripten ist es daher notwendig die vorhandenen Windows Drucker auslesen zu lassen. Hier hilft das Cmdlet Get-Printer.
Drucker auslesen mit Get-Printer in PowerShell
Mit dem PowerShell Cmdlet Get-Printer werden alle installierten Drucker auf dem Windows Computer ausgelesen. Hierbei ist es übrigens egal, ob es ein lokaler Drucker ist, oder ein Netzwerkdrucker.
Get-Printer
Hier werden mit PowerShell nicht nur die Drucker-Namen ausgelesen, sondern eine Reihe weiterer Eigenschaften:
- Name (des Druckers)
- ComputerName (unter Umständen Printserver)
- Type (lokal oder Netzwerk)
- DriverName (Name des Druckertreibers)
- PortName
- Shared
- Published
- DeviceType
Aktive Druck-Jobs ermitteln mit Get-PrintJob
Bei Druckern sind vor allem auch die aktiven Druckaufträge interessant, welche natürlich in einem PowerShell Script abgefragt werden können. Hierzu verwendet man das Cmdlet Get-PrintJob, welche dann alle aktiven Druckaufträge auflistet. Um die Aufträge aller Drucker zu erhalten, wird wiederum Get-Printer benötigt.
Get-Printer | Get-PrintJob
Mit Get-PrintJob werden dann alle aktiven Druckaufträge angezeigt. Außerdem bekommt man Eigenschaften wie die ID des Drucks, den ComputerName, PrinterName, Name des Dokuments, der Zeit-Stempel und der Status des Drucks. Übrigens kann man auch direkt ein Dokument drucken mit PowerShell.
Nach bestimmten Drucker filtern und Eigenschaften anzeigen mit Get-Printer in PowerShell
Oft benötigt man keine komplette Liste der Drucker, sondern lediglich Details zu einem bestimmten Printer oder Plotter. Hier wird in PowerShell trotzdem Get-Printer verwendet, allerdings mit dem Parameter -Name
um filtern zu können.
Get-Printer -Name "*IP102*" | select Name, JobCount
Mit diesem PowerShell Befehl wird nach dem Drucker gefiltert, welcher einen bestimmten Namen hat. Nach dem Pipe wird angegeben, dass lediglich der Name und die derzeitigen DruckJobs ausgegeben werden. Der JobCount ist derzeit 0, da es im Moment keine aktiven Druck-Jobs gibt.
IP-Adresse eines Druckers ermitteln
Möchte man mit PowerShell die IP-Adresse eines Druckers ermitteln, so müssen die Eigenschaften des Ports abgefragt werden. Auch hier wird wieder Get-Printer benötigt.
Get-Printer -Name "*IP102*" | %{Get-PrinterPort -Name $_.PortName | Select Name, PrinterHostAddress, PortNumber}
Kommuniziert wird über den Port des Druckers, nicht über die IP-Adresse, auch wenn diese oft gleich sind. Somit findet man die IP-Info in den Port-Eigenschaften, welche in PowerShell mit Get-PrinterPort abgefragt werden.