Jak mogę zmodyfikować default ls
( Get-ChildItem
) w PowerShell, aby wyświetlał rozmiary plików czytelne dla człowieka, jak ls -h
na komputerze * nix?
ls -lh
robi prostą logikę z rozmiarem pliku, dzięki czemu pokazuje bajty dla naprawdę małych plików, kilobajty dla plików powyżej 1 KB (z jednym miejscem dziesiętnym, jeśli jest poniżej 10 KB) i megabajty dla plików powyżej 1 MB (z jednym miejscem dziesiętnym, jeśli jest poniżej 10 MB) .
powershell
powershell-2.0
Tom Mayfield
źródło
źródło
Update-TypeData : Error in TypeData "System.IO.FileInfo": The member DefaultDisplayPropertySet is already present.
najnowszą pełną wersję PS3 od 9/4.Get-ChildItem
, który po prostu zrobiłby to po wyjęciu z pudełka-DefaultDisplayPropertySet
musi pracować?Najpierw utwórz następującą funkcję:
Można wtedy rura wyjście
Get-ChildItem
przezSelect-Object
i używać obliczoną właściwość formatować Wielkość pliku:Funkcję tę można oczywiście ulepszyć, uwzględniając rozmiary w zakresie PB i więcej, lub w razie potrzeby zmieniać liczbę miejsc dziesiętnych.
źródło
ls2
, spróbuj utworzyć inną funkcję wykonującą opisaną logikę na podstawie parametru, a następnie dodaj dla niego alias. Zobacz tutaj, aby uzyskać więcej informacji na temat tworzenia aliasów.Get-Variable profile
lokalizację).$size
definicją „an”int
, czyli „ a”int32
. Aby to działało z dużymi plikami, zdefiniuj$size
jakoint64
lubuint64
.Select-Object : Es wurde kein Positionsparameter gefunden, der das Argument "System.Collections.Hashtable" akzeptiert.
. Jak mogę określić ścieżkę? Używam$pst= Get-ChildItem -Path $home_user -Filter *.pst -Recurse -File| Sort-Object Length -Descending | ForEach-Object{ $_.FullName}
. Działa to, ale bez rozmiarów plików.Coś takiego jak poniżej, aby wymienić tylko rozmiary plików. Tak, to jest trochę obolałe oczy, ale udaje mu się wykonać zadanie.
Aby przekonwertować na KB:
Do konwersji na MB:
źródło
pipe
Rozwiązanie!na podstawie odpowiedzi Walida Toumi:
Kroki do zrobienia:
FileSize
-Property$PROFILE
Utwórz własny plik Type za pomocą nowego
FileSize
-PropertyUtwórz własny plik Type:
MyTypes.ps1xml
(wstawiam go
$Env:USERPROFILE\Documents\WindowsPowershell
, więc tuż obok mojego$PROFILE
)załaduj nową właściwość w sesji PowerShell:
Update-TypeData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyTypes.ps1xml
Get-ChildItem | Format-Table -Property Name, Length, FileSize
Zmień standardowy format wyjściowy dla FileInfo
utwórz własny plik formatu pliku:
MyFileFormat.format.ps1xml
(ponownie w$Env:USERPROFILE\Documents\WindowsPowershell\
)(To allmost bezpośrednią kopią oryginału
$PSHOME\FileFormat.format.ps1xml
. I tylko zmieniłoLength
sięFileSize
kilka razy)załaduj nowy format w naszej sesji PowerShell:
Update-FormatData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyFileFormat.format.ps1xml
Get-ChildItem
załaduj zmiany w
$PROFILE
skopiuj te wiersze, aby
$PROFILE
załadować zmiany w każdej nowej sesjiźródło
Użyłem rozwiązania jmreicha z aliasem w moim profilu $:
Teraz po prostu piszę:
megs [whatever]
źródło