Как я могу изменить default ls
( Get-ChildItem
) в PowerShell, чтобы он отображал удобочитаемые размеры файлов, как ls -h
на компьютере * nix?
ls -lh
выполняет простую логику с размером файла, так что он показывает байты для действительно маленьких файлов, килобайты для файлов размером более 1 КБ (с одним десятичным знаком, если он меньше 10 КБ), и мегабайт для файлов размером более 1 МБ (с одним десятичным знаком, если он меньше 10 МБ) ,
powershell
powershell-2.0
Том Мэйфилд
источник
источник
Update-TypeData : Error in TypeData "System.IO.FileInfo": The member DefaultDisplayPropertySet is already present.
Запуск последней полной версии PS3 от 9/4.Get-ChildItem
, который просто сделал бы это из коробки-DefaultDisplayPropertySet
должен работать?Сначала создайте следующую функцию:
Затем вы можете передать вывод
Get-ChildItem
черезSelect-Object
и использовать вычисляемое свойство для форматирования размера файла:Эта функция, конечно, может быть улучшена для учета размеров в диапазоне PB и более или для изменения количества десятичных знаков по мере необходимости.
источник
ls2
, попробуйте создать другую функцию, которая будет выполнять логику, описанную вами, на основе параметра, а затем добавить для него псевдоним. Смотрите здесь для получения дополнительной информации о создании псевдонимов.Get-Variable profile
Ее расположение).$size
определяется какint
, который . Чтобы это работало с большими файлами, определите как или .int32
$size
int64
uint64
Select-Object : Es wurde kein Positionsparameter gefunden, der das Argument "System.Collections.Hashtable" akzeptiert.
. Как я могу указать путь? Я использую$pst= Get-ChildItem -Path $home_user -Filter *.pst -Recurse -File| Sort-Object Length -Descending | ForEach-Object{ $_.FullName}
. Это работает, но без размеров файла.Что-то вроде следующего для перечисления только размеров файлов. Да, это немного болит на глазах, но это удается сделать работу.
Для преобразования в КБ:
Для преобразования в МБ:
источник
pipe
Решение!основываясь на ответе Валида Туми:
Шаги, чтобы сделать:
FileSize
-Property$PROFILE
Создайте свой собственный Type-файл с новым
FileSize
-PropertyСоздайте свой собственный Type-файл:
MyTypes.ps1xml
(я вставил его
$Env:USERPROFILE\Documents\WindowsPowershell
, так прямо рядом с моим$PROFILE
)загрузить новое свойство в powershell-сессии:
Update-TypeData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyTypes.ps1xml
Get-ChildItem | Format-Table -Property Name, Length, FileSize
Изменить стандартный формат вывода для FileInfo
создайте свой собственный файл-формат:
MyFileFormat.format.ps1xml
(снова в$Env:USERPROFILE\Documents\WindowsPowershell\
)(Это Allmost прямой копией оригинала
$PSHOME\FileFormat.format.ps1xml
. Я только изменилLength
вFileSize
несколько раз)загрузите новый формат в нашем сеансе PowerShell:
Update-FormatData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyFileFormat.format.ps1xml
Get-ChildItem
загрузить изменения в
$PROFILE
скопируйте эти строки, чтобы
$PROFILE
загрузить изменения в каждом новом сеансеисточник
Я использовал решение jmreicha с псевдонимом в моем профиле $:
Теперь я просто набираю:
megs [whatever]
источник