Comment puis-je modifier la valeur par défaut ls
( Get-ChildItem
) dans PowerShell afin qu'elle affiche des tailles de fichier lisibles par l'homme, comme ls -h
sur une machine * nix?
ls -lh
fait une logique simple avec la taille du fichier, de sorte qu'il affiche les octets pour les très petits fichiers, les kilo-octets pour les fichiers de plus de 1 Ko (avec une décimale si elle est inférieure à 10 Ko) et les mégaoctets pour les fichiers de plus de 1 Mo (avec une décimale si elle est inférieure à 10 Mo) .
powershell
powershell-2.0
Tom Mayfield
la source
la source
Update-TypeData : Error in TypeData "System.IO.FileInfo": The member DefaultDisplayPropertySet is already present.
Exécution de la dernière version complète de PS3 à partir du 9/4.Get-ChildItem
cela ferait tout cela hors de la boîte-DefaultDisplayPropertySet
doit-il travailler?Créez d'abord la fonction suivante:
Vous pouvez ensuite diriger la sortie de
Get-ChildItem
throughSelect-Object
et utiliser une propriété calculée pour formater la taille du fichier:La fonction peut bien sûr être améliorée pour tenir compte des tailles dans la gamme PB et plus, ou pour faire varier le nombre de décimales si nécessaire.
la source
ls2
, essayez de créer une autre fonction qui fait la logique que vous avez décrite en fonction d'un paramètre, puis ajoutez un alias pour celui-ci. Voir ici pour plus d'informations sur la création d'alias.Get-Variable profile
son emplacement).$size
défini comme unint
, qui est unint32
. Pour que cela fonctionne avec des fichiers volumineux, définissez$size
commeint64
ouuint64
.Select-Object : Es wurde kein Positionsparameter gefunden, der das Argument "System.Collections.Hashtable" akzeptiert.
. Comment spécifier le chemin? J'utilise$pst= Get-ChildItem -Path $home_user -Filter *.pst -Recurse -File| Sort-Object Length -Descending | ForEach-Object{ $_.FullName}
. Cela fonctionne, mais sans taille de fichier.Quelque chose comme ce qui suit pour répertorier uniquement les tailles de fichier. Oui, c'est un peu douloureux aux yeux, mais il parvient à faire le travail.
Pour convertir en Ko:
Pour convertir en Mo:
la source
pipe
solution!basé sur la réponse de walid toumi:
Étapes à suivre:
FileSize
propriété$PROFILE
Créez votre propre fichier de type avec la nouvelle
FileSize
propriétéCréez votre propre fichier de type:
MyTypes.ps1xml
(je l'ai mis
$Env:USERPROFILE\Documents\WindowsPowershell
, donc juste à côté de mon$PROFILE
)charger la nouvelle propriété dans une session PowerShell:
Update-TypeData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyTypes.ps1xml
Get-ChildItem | Format-Table -Property Name, Length, FileSize
Modifier le format de sortie standard pour FileInfo
créez votre propre fichier Fileformat:
MyFileFormat.format.ps1xml
(Encore une fois dans$Env:USERPROFILE\Documents\WindowsPowershell\
)(Il est allmost une copie directe de l'original
$PSHOME\FileFormat.format.ps1xml
. Je ne changéLength
àFileSize
quelques reprises)chargez le nouveau format dans notre session PowerShell:
Update-FormatData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyFileFormat.format.ps1xml
Get-ChildItem
charger les modifications dans
$PROFILE
copiez ces lignes pour
$PROFILE
charger les modifications à chaque nouvelle sessionla source
J'ai utilisé la solution de jmreicha avec un alias dans mon profil $:
Maintenant je tape juste:
megs [whatever]
la source