Wie kann ich das default ls
( Get-ChildItem
) in PowerShell so ändern , dass es lesbare Dateigrößen anzeigt, wie ls -h
auf einem * nix-Computer?
ls -lh
Führt eine einfache Logik mit der Dateigröße durch, sodass Bytes für wirklich kleine Dateien, Kilobytes für Dateien über 1 KB (mit einer Dezimalstelle, wenn sie unter 10 KB liegt) und Megabytes für Dateien über 1 MB (mit einer Dezimalstelle, wenn sie unter 10 MB liegt) angezeigt werden. .
powershell
powershell-2.0
Tom Mayfield
quelle
quelle
Update-TypeData : Error in TypeData "System.IO.FileInfo": The member DefaultDisplayPropertySet is already present.
Folgendes bekomme: Ausführen der neuesten vollständigen PS3-Version von 9/4.Get-ChildItem
, der dies sofort erledigt-DefaultDisplayPropertySet
arbeiten?Erstellen Sie zunächst die folgende Funktion:
Sie können dann die Ausgabe von
Get-ChildItem
through leitenSelect-Object
und eine berechnete Eigenschaft verwenden, um die Dateigröße zu formatieren:Die Funktion kann natürlich verbessert werden, um Größen im PB-Bereich und mehr zu berücksichtigen oder die Anzahl der Dezimalstellen nach Bedarf zu variieren.
quelle
ls2
, versuchen Sie, eine andere Funktion zu erstellen, die die von Ihnen beschriebene Logik basierend auf einem Parameter ausführt, und fügen Sie dann einen Alias hinzu. Sehen Sie hier für weitere Informationen über Aliase zu schaffen.Get-Variable profile
Speicherort).$size
als eine definiertint
, was einint32
. Damit dies bei großen Dateien funktioniert, definieren Sie$size
alsint64
oderuint64
.Select-Object : Es wurde kein Positionsparameter gefunden, der das Argument "System.Collections.Hashtable" akzeptiert.
. Wie kann ich den Pfad angeben? Ich benutze$pst= Get-ChildItem -Path $home_user -Filter *.pst -Recurse -File| Sort-Object Length -Descending | ForEach-Object{ $_.FullName}
. Das funktioniert, aber ohne Dateigröße.So etwas wie das folgende zur Auflistung nur der Dateigrößen. Ja, es tut ein bisschen weh, aber es schafft es, die Arbeit zu erledigen.
Für die Konvertierung in KB:
Für die Konvertierung in MB:
quelle
pipe
lösung!basierend auf der antwort von walid toumi:
Schritte zu tun:
FileSize
-Property$PROFILE
Erstellen Sie Ihre eigene Type-Datei mit der neuen
FileSize
-PropertyErstelle deine eigene Type-Datei:
MyTypes.ps1xml
(Ich lege sie ein
$Env:USERPROFILE\Documents\WindowsPowershell
, also direkt neben meiner$PROFILE
)Laden Sie die neue Eigenschaft in einer Powershell-Sitzung:
Update-TypeData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyTypes.ps1xml
Get-ChildItem | Format-Table -Property Name, Length, FileSize
Ändern Sie das Standardausgabeformat für FileInfo
erstelle deine eigene Fileformat-Datei:
MyFileFormat.format.ps1xml
(Again in$Env:USERPROFILE\Documents\WindowsPowershell\
)(Es ist allmost eine direkte Kopie des Originals
$PSHOME\FileFormat.format.ps1xml
. Ich habe nur geändert ,Length
umFileSize
ein paar mal)Laden Sie das neue Format in unsere Powershell-Sitzung:
Update-FormatData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyFileFormat.format.ps1xml
Get-ChildItem
Laden Sie die Änderungen in
$PROFILE
Kopieren Sie diese Zeilen nach
$PROFILE
, um die Änderungen in jeder neuen Sitzung zu ladenquelle