Wir haben in unserer Firma 3 Windows-Printserver. Wie in den meisten IT-Landschaften sind die Strukturen mit der Zeit gewachsen und somit lassen auch die Bezeichnungen der Drucker keine Rückschlüsse auf den verwendeten Printserver zu. Da heißt es Suchen – z.B.: mit Powershell.
In diesem Beitrag geht es nur um den Powershell-Befehl selber, mit dem man die installierten Drucker auslesen kann. Dass daraus dann noch ein kleiner Skripting-Spaß wurde, lest Ihr in den folgenden Beiträgen:
Zum „Endprodukt“ gehören dann noch diese Beiträge
Der Powershell-Befehl zum Auslesen der installierten Drucker lautet
Get-WmiObject -class Win32_Printer
Und erzeugt die Ausgabe:
Location : 122 - Werk 1 Name : HP533-Raum2 PrinterState : 0 PrinterStatus : 3 ShareName : HP533-Raum2 SystemName : Printserver01
Was mir hier fehlt ist der Drucker Port – also die IP-Adresse des Netzwerkdruckers.
Für mich sind zur Suche folgende Angaben wichtig:
Das ergibt dann folgenden Befehl
Get-WmiObject -class Win32_Printer | select Name, PortName, Sharename, Location, Systemname
Mit der Ausgabe
name : HP533-Raum2 portname : 172.0.35.23 sharename : HP533-Raum2 location : Gebaeude2 systemname : Printserver01
Suche ich nun z.B.: nach einer IP-Adresse, kann ich die Ausgabe wie folgt filtern.
Get-WmiObject -class Win32_Printer | select Name, PortName, Sharename, Location, Systemname | where portname –contains xxx.xxx.xxx.xxx
Analog kann die Suche natürlich auch auf die anderen Werte ausgeführt werden.
Mit dem Parameter „-Computer“ kann man nun andere Printserver im (Domänen-)Netzwerk angeben und man muss sich nicht auf jeden einzelnen Druckserver anmelden.
Der Befehl wäre
Get-WmiObject -class Win32_Printer | -Computer Printserver02.firma.lan | select Name, PortName, Sharename, Location, Systemname
Im kokreten Fall war die Idee, das Ganze in eine Excelliste zusammenzuführen und diese auf einer Freigabe als “Nachschlagewerk” zu nutzen.
(Gleich vorweg – eine blöde Idee. Aber dazu später.)
So habe ich von jedem Printserver eine CSV–Datei der Abfrage generiert.
Als Beispiel „Printserver02“
Get-WmiObject -class Win32_Printer | -Computer Printserver02.firma.lan | select Name, PortName, Sharename, Location, Systemname | Export-Csv -NoTypeInformation C:\Users\testuser\Desktop\PS02.csv
So hatte ich danach 3 CSV-Dateien (PS01.csv, PS02.csv, PS03.csv) welche ich in einer Excelliste zusammengeführt habe.
Dann noch den Filter aktiviert und man kann einfach und schnell nach Druckern suchen.
Schön ….
aber ….
Das Hauptproblem war nun die Aktualität der Daten (Drucker ändern sich nun mal).
So musste dann der Datenbestand manuell nachgepfelgt, oder eben wieder neu ausgelesen, werden.
Irgendwie war es noch zu händisch. Es sollte einfacher …. automatischer funktionieren.
Weiter gehts im Teil 2