Windows PowerShell Scripting – Format-Table (FT)
Format-Table, oder kurz FT, steuert die Formatierung der Ausgabe Ihrer Windows PowerShell-Befehle. Immer dann, wenn die Darstellung von Informationen wichtig ist, leiten Sie die Ausgabe des Skripts in Format-Table ein. Auf dieser Seite zeige ich Ihnen Beispiele für diesen simplen, aber wichtigen Befehl.
Windows PowerShell Format-Table-Themen
- Format-Table – Einfache Beispiele
- Format-Table – Fortgeschrittene Beispiele
- Format-Table mit Get-WmiObject
- Format-Table Alias FT
- Format-Wide
- PowerShell Format-List
Format-Table – Einfache Beispiele
Szenario: Wir möchten Prozesse untersuchen, die auf einer Workstation oder einem Windows Server laufen.
Voraussetzungen:
PowerShell und .Net-Framework sind auf Ihrem Rechner installiert.
Sie befinden sich an der Eingabeaufforderung PS> Oder wenn Sie PowerShell 2.0 haben, starten Sie die ISE.
Beispiel 1a
Lassen Sie uns mit einem Beispiel mit der Standardformatierung beginnen:
# Preliminary example, no Format-Table yetGet-Process
Das ‚Problem‘ ist, dass der Name des Prozesses rechts steht und wir Spalten in der Ausgabe haben, die nicht von Interesse sind.
Beispiel 1b
Nun möchte ich Format-Table einführen, damit wir steuern können, welche Eigenschaften in der Ausgabe angezeigt werden sollen. Nehmen wir an, dass wir nur an ‚Handles‘ interessiert sind.
# Example of PowerShell Format-TableGet-Process | Format-Table ProcessName, Handles -auto
Anmerkung 1: Dank der Format-Tabelle haben wir jetzt den Namen des Prozesses in der ersten Spalte.
Anmerkung 2: Der Parameter -auto verhindert, dass sich die Ausgabe auf die volle Breite ausbreitet und macht die Zahlen somit besser lesbar. Um den Effekt zu sehen, versuchen Sie den obigen Befehl ohne -auto.
Guy Recommends: Network Performance Monitor (FREE TRIAL)
SolarWinds Network Performance Monitor (NPM) hilft Ihnen herauszufinden, was in Ihrem Netzwerk passiert. Das Dashboard zeigt Ihnen an, ob die Ursache eine defekte Verbindung, fehlerhafte Geräte oder eine Überlastung der Ressourcen ist.
Am besten gefällt mir, dass NPM Lösungen für Netzwerkprobleme vorschlägt. Es bietet auch die Möglichkeit, den Zustand einzelner virtueller VMware-Maschinen zu überwachen. Wenn Sie an der Fehlersuche und der Erstellung von Netzwerkkarten interessiert sind, dann empfehle ich Ihnen, NPM mit einer 30-tägigen kostenlosen Testversion auszuprobieren.
SolarWinds Network Performance Monitor Download 30-day FREE Trial
Fehlersuche mit Format-Table
Das Hauptproblem bei Format-Table ist das Vergessen der Pipe (|) vor dem Befehl. Meine Technik ist es, den Hauptbefehl zum Laufen zu bringen und dann (|) zu verwenden, um die Ausgabe in Format-Table zu leiten. Von dort aus können wir die Namen der Eigenschaften auflisten, die wir anzeigen möchten.
Ein zweites Problem mit diesem Cmdlet ist das Vergessen des Kommas zwischen den Eigenschaften; aber denken Sie daran, es gibt kein Komma nach Format-Table und vor der ersten Eigenschaft.
Get-Process | Format-Table ProcessName, Handles ID -autoGet-Process | Format-Table ProcessName, Handles, ID -auto
Format-Table – Zwischenbeispiele
Beispiel 2a:
Es ist an der Zeit zu recherchieren, welche anderen Eigenschaften von Get-Process zur Verfügung stehen, dann können wir unseren Format-Table-Befehl feinjustieren.
# Example of PowerShell Format-Table for propertiesGet-Process | Get-Member -Membertype property
Beispiel 2b: Auch hier kann ich es mir nicht verkneifen, mit Format-Table zu filtern, welche Spalte in die Datei exportiert wird.
$Proc = Get-Process | Get-Member -Membertype property$Proc | Format-Table Name | Out-File procprop1.txt
Anmerkung 3: Es ist nicht wirklich notwendig, die Variable $Proc einzuführen. Ein Vorteil dieser Technik ist jedoch, dass sie uns Probleme mit dem Word-Wrapping unseres Skripts in die nächste Zeile erspart.
Beispiel 3a: Als Ergebnis dieser Untersuchung können wir verschiedene Spalten in der Ausgabe auswählen, zum Beispiel BasePriority und HandleCount:
# Beispiel für PowerShell Format-Table für mehrere Elemente
Get-Process | Format-Table Name, HandleCount, BasePriority
Beispiel 3b: Wir wollen sehen, was passiert, wenn wir -auto hinzufügen.
# Example of PowerShell Format output for multiple itemsGet-Process | Format-Table Name, HandleCount, BasePriority -auto
Guy empfiehlt: SolarWinds Engineer’s Toolset (FREE TRIAL)
Dieses Engineer’s Toolset bietet eine umfassende Konsole mit 50 Dienstprogrammen zur Behebung von Computerproblemen. Guy sagt, es hilft mir zu überwachen, was im Netzwerk passiert, und jedes Tool lehrt mich mehr darüber, wie das zugrunde liegende System funktioniert.
Es gibt so viele gute Gadgets; es ist, als hätte man freie Hand in einem Süßwarenladen. Zum Glück sind die Dienstprogramme logisch geordnet: Überwachung, Netzwerkerkennung, Diagnose und Cisco-Tools. Testen Sie das SolarWinds Engineer’s Toolset jetzt 14 Tage lang kostenlos!
SolarWinds Engineer’s Toolset Download 14 Tage lang KOSTENLOS testen
Format-Table mit Get-WmiObject
Format-Table kommt bei der Arbeit mit Get-WmiObject-Klassen zum Tragen. Da die Ausgabe mehr als 5 Eigenschaften enthält und das Standardlayout von Format-List stammt, ziehe ich es vor, meine Eigenschaften auszuwählen und Format-Table zu verwenden.
Beispiel 4: Get-WmiObject
# Example of Get-WmiObject with default outputGet-WmiObject -Class Win32_NetworkAdapter
Beachten Sie (oben), dass das Standardformat für Get-WmiObject Format-List ist. Wir können die Ausgabe jedoch über die Pipeline in Format-Table leiten (siehe unten)
Clear-Host# Example of Get-WmiObject with Format-Table outputGet-WmiObject -Class Win32_NetworkAdapter |Format-Table DeviceId, Name, MACAddress -AutoSize
PowerShell-Parameter für Format-Table
Wir haben bereits den -auto-Parameter von Format-Table gesehen, nun wollen wir weitere Schalter untersuchen:
# Extra parameters for PowerShell to Format outputClear-hostGet-Help Format-Table -full
Hinweis 4: Einer meiner liebsten Format-Table-Parameter ist -GroupBy
Beispiel 5: -GroupBy
Format-Table hat einen Parameter namens -GroupBy, der eine Methode zum Aggregieren der Daten bietet.
Hinweis 5: Out-GridView: Mit PowerShell v 2.0 wird ein neues Cmdlet zur Steuerung der Datenanzeige eingeführt. Lesen Sie mehr darüber, wie Sie die Ergebnisse über die Pipeline in Out-GridView leiten.
Beispiel 6: Sort-object (Kann zu ‚Sort‘ abgekürzt werden)
Eine weitere Technik, um Ordnung in die Ausgabe zu bekommen, ist die Verwendung von Sort-object.
$Proc = Get-Process | Sort-Object -descending BasePriority$Proc | Format-Table Name, HandleCount, BasePriority -auto
Format-Table Alias FT
Bei Microsoft gibt es immer mindestens drei Möglichkeiten, alles zu tun, was einem als Experte wie Redundanz vorkommt, erscheint einem als Anfänger als Perspektive. Ein offensichtliches Beispiel ist, dass Sie Format-Table zu FT abkürzen können. Wenn Sie Ihr Spektrum an PowerShell-Befehlen erweitern, halten Sie Ausschau nach einem anderen PowerShell-Alias, z. B. gwmi für Get-WmiObject und gci (Get-Childitem).
Hier sind alternative Methoden, um die oben genannten Ziele zu erreichen, jedes Beispiel soll Ihr binokulares Sehen entwickeln, also das Ziel klarer sehen. Wenn Sie zum Beispiel mit format-wide und format-List experimentieren, erweitern Sie Ihr Spektrum an Formatierungsmöglichkeiten.
Guy Recommends: SolarWinds Admin Bundle for Active Directory (KOSTENLOSES TOOL)
Importieren Sie Benutzer aus einer Tabellenkalkulation. Geben Sie einfach eine Liste der Benutzer mit ihren Feldern in der obersten Zeile an und speichern Sie sie als .csv-Datei. Starten Sie dann dieses KOSTENLOSE Tool und gleichen Sie die Felder mit den AD-Attributen ab, klicken Sie und importieren Sie die Benutzer.
Optional können Sie den Namen der OU angeben, in der die neuen Konten entstehen sollen. Laden Sie das kostenlose Tool für den Massenimport herunter.
SolarWinds Admin Bundle Download 100% KOSTENLOSES Tool-Bundle
Wenn Sie eine umfangreichere Software zur Anwendungsanalyse benötigen, laden Sie eine kostenlose Testversion von SAM (Server & Application Monitor)
PowerShell FT Alias Beispiele
Beispiel 7a:
# Example of PowerShell Format output with FTGet-Process | FT ProcessName, Handles, PagedMemorySize -auto
Lernpunkte. Sie können FT für Format-Table ersetzen. Außerdem können Sie andere Eigenschaften recherchieren, zum Beispiel PagedMemorySize.
Beispiel 7b:
Clear-hostGet-Process | Get-Member -Membertype method | FT name
Lernpunkte. Neben der Eigenschaft können Sie auch die Methode eines Objekts untersuchen. In anderen Skripten können Sie zum Beispiel die Methode .kill() verwenden.
Beispiel 7c:
Get-Process | FT Name, HandleCount -groupby BasePriority -auto
Lernpunkte. Es ist nicht zwingend notwendig, Variablen zu verwenden. Dies ist ein einfacheres Beispiel, das sich auf den Schalter -groupby konzentriert.
Cmdlet Format-Wide
Weitere Formatierungs-Cmdlets entdecken
Clear-HostGet-Command -verb format
Zusätzlich zu Format-Table können Sie Daten nicht in einer Spalte, sondern in zwei oder drei Spalten darstellen. Dies ist die Option Format-Wide oder (fw), die nützlich ist, wenn Sie z. B. eine lange Liste mit nur einem Feld haben:
Get-Process | Get-Member -Membertype method | Format-Wide name -column 3.
Format-List
Die andere Art, wie PowerShell die Ausgabe formatieren kann, ist mit einer Liste. Dies ist nützlich, wenn Sie mehrere Eigenschaften für ein Objekt anzeigen möchten. Hier ist ein Beispiel:
#Example of PowerShell Format-ListGet-Process services | Format-List -property *
Hinweis 6: Was die Verwendung der Format-Liste lohnenswert macht, ist der Platzhalter * (Stern).
Siehe mehr zu Format-Liste“
Skript (Cmdlet)-Technik
Was die Arbeitstechnik für Format-Table angeht, sind wir an einem Scheideweg angelangt. Meine bevorzugte Arbeitsmethode ist es, Skripte zu erstellen und diese dann über die PowerShell-Kommandozeile auszuführen. Die andere Alternative ist, die Befehle immer wieder in die Shell einzutippen und erneut einzugeben. Meine Technik kommt zum Tragen, wenn die Befehle komplex sind; als Bonus dokumentieren meine Skripte, was ich tue, sodass es einfach ist, auf frühere Experimente zu verweisen und sie zu verfeinern.
Wenn auch Sie diese Skript-(Cmdlet-)Methode mögen, dann stellen Sie zunächst sicher, dass PowerShell die Ausführung des Skripts zulässt, Sie müssen dies nur einmal tun, indem Sie :Set-ExecutionPolicy RemoteSigned
Angenommen, ich habe Beispiel 2 in einer Datei namens proc.ps1 gespeichert, dann gehe ich zur PS-Eingabeaufforderung und gebe .\proc ein. Sie müssen das Skript entweder im Arbeitsverzeichnis speichern oder mit cd in das Verzeichnis wechseln, in dem das Skript gespeichert wurde.
„
Zusammenfassung der Formatierungstabelle in Windows PowerShell
Die Darstellung verändert wirklich die Ausgabe Ihrer PowerShell-Skripts. Wenn Sie zu viele Informationen erhalten, besteht die Lösung darin, zu filtern und die Anzahl der Spalten in der Anzeige zu reduzieren. Bei anderen Gelegenheiten müssen Sie zusätzliche Eigenschaften anzeigen, die vom Standardbefehl nicht angezeigt werden. In jedem Fall gibt Ihnen Format-Table die Kontrolle über die Darstellung Ihrer Ausgabe.
Während Format-Table (oder kurz FT) ein allgegenwärtiger Befehl ist, hat er doch zahlreiche Schalter. Wenn Sie die vielen Schalter mit Bedacht einsetzen, können Sie kreative und effektive Ausgaben erzeugen.
Weitere Tutorials zu Microsoft PowerShell-Ausgaben:
– PShell Home – Out-File – Out-GridView – ConvertTo-Csv – ConvertTo-Html – ConvertFrom-Csv
– Tee-Object – Import-CSV – Format-Table – PowerShell Here-.String – ConvertFrom-JSON
– Export-CliXml – Format-List – Read-Host – PowerShell Get-History – – -f format – Pipe to file
Bitte mailen Sie mir, wenn Sie ein besseres Beispielskript haben. Bitte melden Sie auch sachliche Fehler, grammatikalische Fehler oder defekte Links, ich werde den Fehler gerne korrigieren.