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
Drucker auslesen PowerShell mit 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
Aktive Druckaufträge PowerShell 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
Get-Printer PowerShell 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.

  • Hi, das Netzwerkdrucker angezeigt werden stimmt leider nur bedingt. Wenn ich den Befehl für einen anderen Rechner ausführe mit dem Parameter -Computername werden nur lokale Drucker angezeigt (warum auch immer).

    • Hallo,
      das stimmt auch nur bedingt. Netzwerkdrucker werden oft für einen Benutzer angebunden, nicht für den “ganzen Computer”. Deswegen erscheinen diese auch nicht, wenn diese auf einem Remote-Computer ausgelesen werden.
      Aber es gibt natürlich auch Netzwerkdrucker, die auf Computer-Ebene angebunden werden. Diese werden dann aufgelistet – ist aber eher selten und bei euch wohl auch nicht so konfiguriert.

      Gruß Johannes

  • Hi wenn ich dies hier ausführe wird der “Name” immer ab 5 Stellen abgeschnitten, leider auch wenn ich mir in eine Text-Datei schreiben lasse.
    Get-Printer -Name “*IP102*” | %{Get-PrinterPort -Name $_.PortName | Select Name, PrinterHostAddress, PortNumber}
    Kann man das irgendwie ändern?

  • Mit Get-Printer und Get-Printdriver wird bei mir der name mit … abgeschnitten. Gibt es eine Möglichkeit dies zu unterbinden, da vor allem bei den Treibern hinten die Version angegeben ist.

  • Ich würde gerne nach Portname (alle mit IP-Adresse) filtern. Leider finde ich im Netz keine Lösung dafür.

  • Hi,

    wir haben einen neuen Printserver unter Windows 2022. Gibt es da sinnvolle Möglichkeiten mit der PowerShell, dass ein Client sich alle freigegebenen Drucker per Scipt anzeigen lässt und dann auch mit einem weiteren Befehl einen Netzwerkdrucker verbinden kann?

    Ciao und Grüße
    Rainer

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
    >