Bei meinen ersten Gehversuchen in Powershell bin ich auf den Befehl „ConvertTo-Html“ gestoßen. Daraus reifte die Idee, die Druckerübersicht gleich in eine HTML-Datei zu exportieren.
Der Vorteil: man kann diese Datei z.B.: in einer Read-Only-Freigabe bereitstellen, ohne dass weitere Dienste -wie z.B.: ein Webserver- installiert/aktiviert werden muss. Sozusagen eine Lösung für Puristen 😉
Der Vorteil, keinen Webserver zu benötigen, liegt darin, dass keine weiteren angreifbaren Dienste gestartet werden.
Hat seinen Charme.
Grundsätzlich ist der Befehl einfach anzuwenden; anstelle von „ExportTo-CSV“ verwendet man „ConvertTo-Html“.
Was erstmal so einfach klingt, ergibt dann jedoch ein weiteres Problem: ich habe ja 3 Server abzurufen.
Der Befehl „ConvertTo-Hmtl“ erzeugt eine komplette Webseite mit Head-, Body- und Table-Bereichen.
Selbst wenn man den Parameter „-Fragment“ verwendet, wird immer noch eine HTML-Tabelle mit <table> und </table> erzeugt.
Aus diesem Grund bleibe ich bei meiner vorherigen Routine mit der „komplett.csv“ und wandle diese in ein HTML um.
Die bisherige Routine:
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 } |
Jetzt gilt es die CSV-Datei in eine HTML zu verwandeln.
Dazu rufe ich die erzeugte CSV auf, aber es gibt einen kleinen Haken: ich habe alle Kopfzeilen abgeschnitten.
Somit weiß der ConvertTo-Befehl nicht, was er zu machen hat. Ich muss also die Kopfzeilen manuell übergeben.
1 |
Get-Content C:\___skript\komplett.csv |ConvertFrom-Csv -header "Druckername","Druckerport","Freigabename","Ort","Servername" |ConvertTo-Html | Out-File C:\___skript\html\komplett.html |
Das war´s auch schon.
Jetzt habe ich eine HTML-Datei – nicht schön, aber sie funktioniert.
Jetzt gebe ich dem Ganzen noch etwas mehr Form: Einen Rahmen und Hintergrundfarbe der Überschriftspalten.
Um den Befehl übersichtlich zu halten, schreibe ich die Parameter in eine Variable für den Head-Content „$heac“
1 2 3 4 5 |
$heac = "`r`n" $heac = $heac + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}`r`n" $heac = $heac + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:lightgrey}`r`n" $heac = $heac + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black; padding: 3px;}`r`n" $heac = $heac + "`r`n" |
und erweitere den Befehl „ConvertTo-Html“ mit dem Parameter „-head $heac“
1 |
Get-Content C:\___skript\komplett.csv |ConvertFrom-Csv -header "Druckername","Druckerport","Freigabename","Ort","Servername" |ConvertTo-Html -head $heac | Out-File C:\___skript\html\komplett.html |
Sieht schon schöner aus.
Kann man aber immer noch pimpen: z.B: mit einer Überschirft.
Diese kommt in den „Body“ und kann mit dem gleichnamigen Parameter gesetzt werden:
1 |
Get-Content C:\___skript\komplett.csv |ConvertFrom-Csv -header "Druckername","Druckerport","Freigabename","Ort","Servername" |ConvertTo-Html -head $heac -body "<H1>Druckerübersicht</H1>" | Out-File C:\___skript\html\komplett.html |
Diese Datei kann nun, wie oben erwähnt, über eine Freigabe (z.B.: Read-Only) zur Verfügung gestellt werden oder auch auf den lokalen Rechner kopiert und genutzt werden – ohne Netzwerkverbindung.
Also „Offline“.
Aber irgendwie fehlen noch die „gewohnten“ zusätzlichen Angaben und die Suchfunktion, wie im PHP-Skript in den vorherigen Beiträgen.
Weiter geht’s im nächsten Teil