12

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.

Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

  • Chris Walter sagt:

    Funktioniert das bei Druckern von jeder Marke?

  • akira2012 sagt:

    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).

    • Johannes sagt:

      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

  • Stephan sagt:

    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?

  • Mercedes sagt:

    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.

  • Iris B. sagt:

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

  • Rainer sagt:

    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

  • sidebar
    >