PowerShell: Format-Tabelle ohne Header

8

In einem PowerShell-Skript habe ich einige Objekte, die ich an die Format-Table CmdLet übergebe.
Die Ausgabe meines Skripts sieht folgendermaßen aus:

%Vor%

Da die Bedeutung der Felder ziemlich selbsterklärend ist, möchte ich die Header, die '---' Trennzeichen und die Leerzeilen am Anfang und am Ende der Ausgabe von Format-Table. Ich denke nicht, dass das CmdLet dies unterstützt (oder zumindest wenn es einen Parameter dafür gibt, konnte ich es nicht finden).

Was wäre der beste Weg, nur die Zeilen mit den tatsächlichen Werten aus der Ausgabe der Format-Tabelle zu belassen?

    
Paolo Tedesco 15.07.2010, 11:53
quelle

6 Antworten

19

Probieren Sie den Parameter -HideTableHeaders auf Format-Table :

aus %Vor%

(Ich verwende PowerShell v2. Ich weiß nicht, ob das in v1 war.)

    
Jay Bazuzi 15.07.2010, 14:12
quelle
4

Der Parameter -HideTableHeaders bewirkt leider immer noch, dass die Leerzeilen gedruckt werden (und Tabellenköpfe, die anscheinend erscheinen, werden immer noch für die Spaltenbreite berücksichtigt). Der einzige Weg, den ich kenne, könnte hier zuverlässig funktionieren, wäre die Ausgabe selbst zu formatieren:

%Vor%     
Joey 15.07.2010 15:38
quelle
2

Versuchen Sie -ExpandProperty . Zum Beispiel benutze ich dies, um die saubere Variable an Out-Gridview -PassThru zu senden, ansonsten hat die Variable die Header-Information gespeichert.

Ein Beispiel:

%Vor%     
KERR 02.01.2017 23:41
quelle
1

Ein anderer Ansatz besteht darin, ForEach-Object zu verwenden, um einzelne Elemente zu einer Zeichenfolge und dann zu projizieren Verwenden Sie den Out-String CmdLet, um die Endergebnisse in ein String- oder String-Array zu projizieren:

%Vor%

Der Vorteil dieses Ansatzes besteht darin, dass Sie das Ergebnis in einer Variablen speichern können und KEINE leeren Zeilen haben.

    
Greg Bray 29.05.2013 17:45
quelle
0
___ answer3256345 ___

Probieren Sie den Parameter %code% auf %code% :

aus %Vor%

(Ich verwende PowerShell v2. Ich weiß nicht, ob das in v1 war.)

    
___ qstntxt ___

In einem PowerShell-Skript habe ich einige Objekte, die ich an die %code% CmdLet übergebe.
Die Ausgabe meines Skripts sieht folgendermaßen aus:

%Vor%

Da die Bedeutung der Felder ziemlich selbsterklärend ist, möchte ich die Header, die '---' Trennzeichen und die Leerzeilen am Anfang und am Ende der Ausgabe von Format-Table. Ich denke nicht, dass das CmdLet dies unterstützt (oder zumindest wenn es einen Parameter dafür gibt, konnte ich es nicht finden).

Was wäre der beste Weg, nur die Zeilen mit den tatsächlichen Werten aus der Ausgabe der Format-Tabelle zu belassen?

    
___ answer3257218 ___

Der Parameter %code% bewirkt leider immer noch, dass die Leerzeilen gedruckt werden (und Tabellenköpfe, die anscheinend erscheinen, werden immer noch für die Spaltenbreite berücksichtigt). Der einzige Weg, den ich kenne, könnte hier zuverlässig funktionieren, wäre die Ausgabe selbst zu formatieren:

%Vor%     
___ answer16820601 ___

Ein anderer Ansatz besteht darin, ForEach-Object zu verwenden, um einzelne Elemente zu einer Zeichenfolge und dann zu projizieren Verwenden Sie den Out-String CmdLet, um die Endergebnisse in ein String- oder String-Array zu projizieren:

%Vor%

Der Vorteil dieses Ansatzes besteht darin, dass Sie das Ergebnis in einer Variablen speichern können und KEINE leeren Zeilen haben.

    
___ tag123powershell ___ PowerShell ist ein Befehlszeilen- und Skriptprogramm für Windows. Verwenden Sie dieses Tag nur für Fragen zum Schreiben und Ausführen von PowerShell-Skripts. Programmierfragen speziell für die plattformübergreifende Version PowerShell Core (Windows, macOS, Linux) sollte mit [powershell-core] gekennzeichnet werden. Fragen zur Systemverwaltung sollten auf SuperUser gestellt werden. ___ antwort13240712 ___

Ich weiß, dass es zwei Jahre zu spät ist, aber diese Antworten haben mir geholfen, eine Filterfunktion zu formulieren, um Objekte auszugeben und die resultierenden Strings zu trimmen. Da ich in meiner endgültigen Lösung alles zu einer Zeichenfolge formatieren muss, ging ich etwas anders vor. Long-hand, mein Problem ist sehr ähnlich und sieht ein bisschen so aus

%Vor%

Hier ist mein Beispiel:

%Vor%

Meine Out-Verbose-Funktion sieht folgendermaßen aus:

%Vor%

Hinweis1: Diese Lösung wird nicht so skaliert, dass sie Millionen von Objekten ähnelt (sie behandelt die Pipeline nicht seriell)

Hinweis2: Sie können immer noch die Option -noheadings hinzufügen. Wenn Sie sich wundern, warum ich hier einen Skriptblock verwendet habe, soll das Überladen wie das Senden an Disk-Datei oder andere Ausgabeströme ermöglichen.

    
___ tag123formatting ___ Der Prozess der Umwandlung von Text oder Daten für die Präsentation. Ein typisches Beispiel wäre die Umwandlung eines Dezimals in ein bestimmtes Währungsformat mit der korrekten Anzahl von Dezimalstellen. ___ answer46894312 ___

Hier ist, wie ich das löse. Ich übertrage die Ausgabe nur nach Out-String und übergebe diese Ausgabe dann an die .NET-Trim-Funktion:

%Vor%

Dadurch werden die Zeilenumbrüche vor und nach der Tabelle entfernt.

Sie können TrimStart auch verwenden, um sich nur um den Zeilenumbruch der Kopfzeile zu kümmern, wenn Sie immer noch möchten, dass die nachfolgende Zeile unterbrochen wird.

%Vor%     
___ qstnhdr ___ PowerShell: Format-Tabelle ohne Header ___ answer41434612 ___

Versuchen Sie %code% . Zum Beispiel benutze ich dies, um die saubere Variable an %code% zu senden, ansonsten hat die Variable die Header-Information gespeichert.

Ein Beispiel:

%Vor%     
___
Conrad B 05.11.2012 21:30
quelle
0

Hier ist, wie ich das löse. Ich übertrage die Ausgabe nur nach Out-String und übergebe diese Ausgabe dann an die .NET-Trim-Funktion:

%Vor%

Dadurch werden die Zeilenumbrüche vor und nach der Tabelle entfernt.

Sie können TrimStart auch verwenden, um sich nur um den Zeilenumbruch der Kopfzeile zu kümmern, wenn Sie immer noch möchten, dass die nachfolgende Zeile unterbrochen wird.

%Vor%     
user1769153 23.10.2017 16:35
quelle

Tags und Links