Die Powershell-Länge wird in der Ausgabe von Get-ChildItem nicht angezeigt
Ich versuche diesen Befehl in Windows 10 PowerShell:
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime
Das Ergebnis enthält nur FullName
, während LastAccessTime
und Length
fehlt in der Ausgabe.
PowerShell-Screenshot
Was mache ich falsch?
Antworten
Das wird funktionieren:
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Export-Csv list.csv
Das Problem ist lediglich ein Anzeigeproblem :
Da die Pfade zwischen den Ausgabeobjekten lang sind und
FullName
die erste ausgewählte Eigenschaft ist, werden die verbleibenden Eigenschaften (Spalten) nicht gedruckt , da sie nicht auf den Bildschirm passen. Die Eigenschaften sind jedoch vorhanden und können programmgesteuert verwendet werden.Hinweis: Wenn Sie zur späteren programmgesteuerten Verarbeitung in einer Datei speichern möchten , sollten Sie
>
/ nicht verwenden .Out-File
Dies führt zu derselben Formatierung für die Anzeige , die Sie in der Konsole (im Terminal) sehen, da diese Formatierung nur für die bestimmt ist menschlicher Beobachter .- Für programmatische Bearbeitung , verwenden Sie ein strukturiertes Datenformat wie CSV , wie in gezeigt Ashok Prasath Antwort
Problemumgehungen :
Eine schnelle und schmutzige Problemumgehung besteht darin , die
FullName
Eigenschaft als letzte zu setzen , wie Doug Maurer empfiehlt. Dadurch werden alle Eigenschaften (Spalten) angezeigt, obwohl dieFullName
Eigenschaftswerte abgeschnitten (symbolisiert mit…
) werden, insbesondere vom Beginn der Pfade an:# FullName is placed *last* # Caveat: Paths will be truncated at the *end*. Get-ChildItem -Recurse | select Length, LastAccessTime, FullName
Wenn Sie nichts dagegen nicht auf eine Schaltliste -basierten Format , wobei jeder Eigenschaftswert in einer eigenen Zeile von dem Eigenschaftsnamen voran dargestellt wird, Rohr Format-List; Beachten Sie, dass zu lange Werte in Zeilenumbrüche umgewandelt werden :
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Format-List
Wenn Sie eine tabellarische Ausgabe wünschen und es Ihnen nichts ausmacht, Zeilenumbrüche in Ihre Ausgabe einzufügen , können Sie Out-Stringmit einem
-Width
Wert weiterleiten, der groß genug ist, um in alle Spalten zu passen (beachten Sie, dass dies Out-Fileauch unterstützt wird-Width
):Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Out-String -Width 300
Wenn Sie das horizontale Scrollen dem Zeilenumbruch vorziehen , können Sie das Obige in einer Datei speichern und darin einen Texteditor öffnen oder mit einem Texteditor wie Visual Studio Code die Ausgabe direkt an diese weiterleiten :
# Opens the output directly in a new Visual Studio Code editor tab. Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Out-String -Width 300 | code -
Andernfalls können Sie - wenn Sie die tabellarische Anzeige in der Konsole in der angegebenen genauen Spaltenreihenfolge und ohne Zeilenumbruch anzeigen möchten, die Werte nur abschneiden
FullName
, damit alle Spalten passen. Beachten Sie, dass ich der Kürze halber den Aufrufselect
( Select-Object) zugunsten der direkten Verwendung von Format-Table:Get-ChildItem -Recurse | Format-Table @{ e='FullName'; w=[Console]::WindowWidth-45; a='right'}, Length, LastAccessTime
Beachten Sie, wie die Spaltenbreite (
w
Eintrag, Abkürzung fürwidth
) auf den Konsolenfenstern mit ([Console]::WindowWidth
) Minuszeichen basiert45
, um so vieleFullName
Werte wie möglich anzuzeigen und gleichzeitig Platz für die beiden anderen Spalten zu lassen. auch, um diese Abschneiden (symbolisiert zu gewährleisten mit…
dem angelegten wird Anfang des Weges - so dass Datei- / Verzeichnisname immer angezeigt wird - die Spalte rechtsbündig (über dena
Eintrag, kurz füralignment
); wenn Sie Abschneiden der bevorzugen Ende Lassen Sie dena
Eintrag des Pfads weg (der dann standardmäßig lautetleft
).Weitere Informationen zu dieser hashtable-basierten (
@{ ... }
) Methode zum Angeben sogenannter berechneter Eigenschaften fürFormat-Table
, einschließlich einer Methode zum Abschneiden von Anfang an unter Beibehaltung der linken Ausrichtung, finden Sie in dieser Antwort .