¿Cómo puedo modificar el valor predeterminado ls
( Get-ChildItem
) en PowerShell para que muestre tamaños de archivo legibles por humanos, como ls -h
en 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-ChildItem
que eso solo lo haría fuera de la caja-DefaultDisplayPropertySet
que trabajar?Primero, cree la siguiente función:
Luego puede canalizar la salida de
Get-ChildItem
throughSelect-Object
y 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 profile
su ubicación).$size
se define como unint
, que es unint32
. Para que esto funcione con archivos grandes, defínalo$size
comoint64
ouint64
.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
pipe
solucion!basado en la respuesta de walid toumi:
Pasos a seguir:
FileSize
propiedad$PROFILE
Cree su propio tipo de archivo con la nueva
FileSize
propiedadCrea 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.ps1xml
Get-ChildItem | Format-Table -Property Name, Length, FileSize
Cambiar 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 cambiadoLength
aFileSize
un par de veces)cargue el nuevo formato en nuestra sesión de powershell:
Update-FormatData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyFileFormat.format.ps1xml
Get-ChildItem
cargar los cambios en
$PROFILE
copie estas líneas para
$PROFILE
cargar 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