Nachdem das Batch-Skript eigentlich läuft und ich dann gleich noch den Geistesblitz hatte, die Abfrage in Powershell umzusetzen, ging es wieder von Vorne los – die Abfrage der Drucker.
Zuerst wieder die Abfrage der Drucker, und das ganze ebenfalls in einer Schleife.
1 2 3 4 5 6 |
$Servername = @("Printserver01","Printserver02","Printserver03") For ($i=0; $i -lt $Servername.Length; $i++) { $Server=$Servername[$i] $File=$Servername[$i]+".csv" Get-WmiObject -class Win32_Printer -Computer "$Server.firma.lan" | select Name, PortName, Sharename, Location, Systemname |Export-Csv C:\___skript\"$File" } |
Ebenso bleibt die Aufgabe, die ersten beiden Zeilen abzuschneiden.
Also erweitere ich die Schleife um folgende Zeile
1 |
(Get-content $File | Select-Object -Skip 2) | Set-Content $File |
Bleibt so nur noch die Bereinigung der Datei von dem Microsoft XPS-Drucker, sowie den FreePdf- und Fineprint-Drucker.
Da dies der letzte Schritt ist, kann man das Ergebnis gleich in endgültige (Gesamt-)Datei schreiben und die Druckserver-Datei löschen.
Die Schleife wird um 2 Zeilen erweitert:
1 2 |
Get-content $File | Select-String -pattern "\s.*XPS\s.*|\s.*PDF\s.*|FinePrint" -notmatch |add-content C:\___skript\komplett.csv Remove-item $File |
Und das wars auch schon.
Das komplette Powershell-Skript, inkl. Bereinigung der Dateien, sieht demnach so aus:
1 2 3 4 5 6 7 8 9 10 11 12 |
Get-ChildItem -path c:\___skript -Filter *.csv | Remove-Item #-Whatif $Servername = @("Printserver01","Printserver02","Printserver03") For ($i=0; $i -lt $Servername.Length; $i++) { $Server=$Servername[$i] $File=$Servername[$i]+".csv" Get-WmiObject -class Win32_Printer -Computer "$Server.firma.lan" | select Name, PortName, Sharename, Location, Systemname |Export-Csv C:\___skript\"$File" (Get-content $File | Select-Object -Skip 2) | Set-Content $File Get-content $File | Select-String -pattern "\s.*XPS\s.*|\s.*PDF\s.*|FinePrint" -notmatch |add-content C:\___skript\komplett.csv Remove-item $File } |
Wer jetzt noch das erste Skript (CMD) im Kopf hat, der wird hier einen krassen Unterschied in der Länge des Skriptes feststellen.
Ein kleiner weiterer Stolperstein war dann das Erzeugen eines geplanten Tasks.
Hier kann nämlich nicht einfach das Powershell-Skript aufgerufen werden, sondern es wird Powershell selber mit einem Parameter aufgerufen – dem auszuführenden Skript.
Läuft!
Nächste Aufgabe: Anzeigen der Liste im Browser.
Auch hier habe ich zuerst einen Webserver verwendet, bis ich festellen musste: es geht noch simpler- aber dazu später mehr.
Nächster Schritt: Anzeigen einer CSV-Datei im Browser.