¿Cómo puedo modificar el valor predeterminado ls( Get-ChildItem) en PowerShell para que muestre tamaños de archivo legibles por humanos, como ls -hen una máquina * nix?
ls -lh hace una lógica simple con el tamaño del archivo, de modo que muestra bytes para archivos realmente pequeños, kilobytes para archivos de más de 1 K (con un decimal si es inferior a 10 K) y megabytes para archivos de más de 1 M (con un decimal si es inferior a 10 MB) .
powershell
powershell-2.0
Tom Mayfield
fuente
fuente

Update-TypeData : Error in TypeData "System.IO.FileInfo": The member DefaultDisplayPropertySet is already present.Ejecutar la última versión completa de PS3 de 9/4.Get-ChildItemque eso solo lo haría fuera de la caja-DefaultDisplayPropertySetque trabajar?Primero, cree la siguiente función:
Luego puede canalizar la salida de
Get-ChildItemthroughSelect-Objecty usar una propiedad calculada para formatear el tamaño del archivo:Por supuesto, la función se puede mejorar para tener en cuenta los tamaños en el rango PB y más, o para variar el número de puntos decimales según sea necesario.
fuente
ls2, intente crear otra función que haga la lógica que describió en función de un parámetro, luego agregue un alias para ello. Consulte aquí para obtener más información sobre la creación de alias.Get-Variable profilesu ubicación).$sizese define como unint, que es unint32. Para que esto funcione con archivos grandes, defínalo$sizecomoint64ouint64.Select-Object : Es wurde kein Positionsparameter gefunden, der das Argument "System.Collections.Hashtable" akzeptiert.. ¿Cómo puedo especificar la ruta? Yo uso$pst= Get-ChildItem -Path $home_user -Filter *.pst -Recurse -File| Sort-Object Length -Descending | ForEach-Object{ $_.FullName}. Esto funciona, pero sin tamaños de archivo.Algo como lo siguiente para enumerar solo los tamaños de archivo. Sí, está un poco dolorido en los ojos, pero logra hacer el trabajo.
Para convertir a KB:
Para convertir a MB:
fuente
pipesolucion!basado en la respuesta de walid toumi:
Pasos a seguir:
FileSizepropiedad$PROFILECree su propio tipo de archivo con la nueva
FileSizepropiedadCrea tu propio tipo de archivo:
MyTypes.ps1xml(lo puse
$Env:USERPROFILE\Documents\WindowsPowershell, así que justo al lado de mi$PROFILE)cargar la nueva propiedad en una sesión de powershell:
Update-TypeData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyTypes.ps1xmlGet-ChildItem | Format-Table -Property Name, Length, FileSizeCambiar el formato de salida estándar para FileInfo
cree su propio archivo de formato de archivo:
MyFileFormat.format.ps1xml(nuevamente en$Env:USERPROFILE\Documents\WindowsPowershell\)(Es allmost una copia directa del original
$PSHOME\FileFormat.format.ps1xml. Sólo cambiadoLengthaFileSizeun par de veces)cargue el nuevo formato en nuestra sesión de powershell:
Update-FormatData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyFileFormat.format.ps1xmlGet-ChildItemcargar los cambios en
$PROFILEcopie estas líneas para
$PROFILEcargar los cambios en cada nueva sesiónfuente
Usé la solución de jmreicha con un alias en mi $ profile:
Ahora solo escribo:
megs [whatever]fuente