Powershell - Formatierung der Ausgabe
Hi
ich habe ein script dass versch. Infos über PC's ausgibt.
zb:
Servicepack: Service Pack 4
Architektur: 64-Bit
RAM GB: 3
Die Ausgabe erfolgt mittels write-host
Die Ausrichtung der zweiten Spalte erreiche ich mit `t für Tabulator:
write-host "Servicepack:`t"$os.CSDVersion
Trotzdem habe ich jetzt eine zusätzliche Zeile wo ich mit Tabs nicht mehr hinkomme.
Entweder die zweite Spalte ist zu weit rechts bzw. zu weit links.
Durch einfügen von Leerzeichen hinter dem Doppelpunkt lässt sichs nicht lösen...
Wie könnte man das machen?
Danke für Eure Tips
SC
ich habe ein script dass versch. Infos über PC's ausgibt.
zb:
Servicepack: Service Pack 4
Architektur: 64-Bit
RAM GB: 3
Die Ausgabe erfolgt mittels write-host
Die Ausrichtung der zweiten Spalte erreiche ich mit `t für Tabulator:
write-host "Servicepack:`t"$os.CSDVersion
Trotzdem habe ich jetzt eine zusätzliche Zeile wo ich mit Tabs nicht mehr hinkomme.
Entweder die zweite Spalte ist zu weit rechts bzw. zu weit links.
Durch einfügen von Leerzeichen hinter dem Doppelpunkt lässt sichs nicht lösen...
Wie könnte man das machen?
Danke für Eure Tips
SC
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 319382
Url: https://administrator.de/contentid/319382
Ausgedruckt am: 05.11.2024 um 10:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Scroller,
dafür gibt es mehrere Möglichkeiten.
Hier sind mal drei davon anhand eines Beispiels dargestellt:
Mehr zu Calculated Properties genutzt in Bsp. 2.
Die Doku zum -F Operator in Beispiel 3 kannst du hier nachlesen:
http://ss64.com/ps/syntax-f-operator.html
Man kann z.B. auch ohne jetzt alle einzelnen Eigenschaften eines Powershell-Objekts "manuell" auflisten zu müssen die Ausgabe des format-list CMDLets automatisiert nachbauen. Das sieht dann z.B. aus:
Generell sollte man immer so lange wie möglich mit Objekten arbeiten und die Ausgabe als String immer zum Schluss machen.
Grüße Uwe
dafür gibt es mehrere Möglichkeiten.
Hier sind mal drei davon anhand eines Beispiels dargestellt:
# Testdatenobjekt
$os = gwmi Win32_OperatingSystem
# Variante 1 (format-list)
$os | select Version,SerialNumber,RegisteredUser | fl
# Variante 2 (man möchte andere Namen für die Eigenschaften [calculated properties])
$os | select @{n='Versionsnummer';e={$_.Version}},@{n='Seriennummer';e={$_.SerialNumber}}, @{n='Benutzer';e={$_.RegisteredUser}} | fl
# Variante 3 (mit Format Specifier)
"{0,-30} : {1}" -f "Version",$os.Version
"{0,-30} : {1}" -f "Seriennummer",$os.SerialNumber
"{0,-30} : {1}" -f "User",$os.RegisteredUser
Die Doku zum -F Operator in Beispiel 3 kannst du hier nachlesen:
http://ss64.com/ps/syntax-f-operator.html
Man kann z.B. auch ohne jetzt alle einzelnen Eigenschaften eines Powershell-Objekts "manuell" auflisten zu müssen die Ausgabe des format-list CMDLets automatisiert nachbauen. Das sieht dann z.B. aus:
# Objekt mit Eigenschaften
$os = gwmi Win32_OperatingSystem
# Alle Eigenschaften des Objektes holen
$props = $os | gm -MemberType Property | select -Expand Name
# maximale Länge der Bezeichnung ermitteln
$length = ($props | sort Length -Descending | select -First 1).Length
# Alle Eigenschaften einheitlich formatiert ausgeben:
$props | %{"{0,-$length} : {1}" -F $_,$os.$_}
Grüße Uwe