Seguro, que muchos de vosotros, en alguna ocasión habréis tenido que comprobar el tamaño que tienen cada una de las carpetas del árbol de carpetas de un servidor de ficheros.
Frecuentemente tenemos que realizar esta tarea, porque nos estamos quedando sin espacio en los discos de nuestro servidor de archivos y necesitamos hacer limpieza del árbol de carpetas, pero para facilitar el trabajo de vaciado primero tenemos que saber cuales son las carpetas que consumen más capacidad.
La manera más sencilla de poder comprobar el tamaño que tiene cada una de las carpetas que componen nuestro servidor de ficheros, es listar el árbol entero a un archivo de texto.
Frecuentemente tenemos que realizar esta tarea, porque nos estamos quedando sin espacio en los discos de nuestro servidor de archivos y necesitamos hacer limpieza del árbol de carpetas, pero para facilitar el trabajo de vaciado primero tenemos que saber cuales son las carpetas que consumen más capacidad.
La manera más sencilla de poder comprobar el tamaño que tiene cada una de las carpetas que componen nuestro servidor de ficheros, es listar el árbol entero a un archivo de texto.
Para realizar esta operación, usaremos la construcción del comando que mostramos a continuación. En él, sustituiremos la carpeta C:\DATOS\* por el nombre de nuestra carpeta del servidor de ficheros.
Terminada la ejecución, aparecerá por pantalla el listado de carpetas con sus tamaños.
Get-ChildItem -path "C:\datos\*" | Foreach {
$Files = Get-ChildItem $_.FullName -Recurse -File
$Size = '{0:N2}' -f (( $Files | Measure-Object -Property Length -Sum).Sum /1MB)
[PSCustomObject]@{Profile = $_.FullName ; TotalObjects = "$($Files.Count)" ; SizeMB = $Size}
}
Profile TotalObjects SizeMB
------- ------------ ------
"C:\datos\Carpeta Datos 01 64 4.965,21
"C:\datos\Carpeta Datos 02 9 1.036,36
"C:\datos\Carpeta Datos 03 9 1.036,36
"C:\datos\Carpeta Datos 04 8 12,36
Profile TotalObjects SizeMB
------- ------------ ------
"C:\datos\Carpeta Datos 01 64 4.965,21
"C:\datos\Carpeta Datos 02 9 1.036,36
"C:\datos\Carpeta Datos 03 9 1.036,36
"C:\datos\Carpeta Datos 04 8 12,36
Esto seria suficiente, si solo tenemos cuatro carpetas en nuestro servidor de ficheros, como ocurre en nuestro laboratorio de ejemplo. Pero como en la realidad no será así, lo mejor es listar el resultado de la ejecución anterior a un archivo de texto. Esto nos permitirá trabajar más cómodamente.
Para realizar esta operación, usaremos la construcción del comando que mostramos a continuación. En él, sustituiremos la carpeta C:\DATOS\* por el nombre de nuestra carpeta del servidor de ficheros y la ruta C:\folder-size\folder-size.csv por la ubicación donde deseamos almacenar el archivo de texto resultante de la operación.
Para realizar esta operación, usaremos la construcción del comando que mostramos a continuación. En él, sustituiremos la carpeta C:\DATOS\* por el nombre de nuestra carpeta del servidor de ficheros y la ruta C:\folder-size\folder-size.csv por la ubicación donde deseamos almacenar el archivo de texto resultante de la operación.
Get-ChildItem -path "C:\datos\*" | Foreach {
$Files = Get-ChildItem $_.FullName -Recurse -File
$Size = '{0:N2}' -f (( $Files | Measure-Object -Property Length -Sum).Sum /1MB)
[PSCustomObject]@{Profile = $_.FullName ; TotalObjects = "$($Files.Count)" ; SizeMB = $Size}
}| Export-CSV "C:\folder-size\folder-size.csv" -NoTypeInformation
Finalizada la ejecución del comando, encontraremos en la carpeta llamada folder-size de nuestro disco C:\, el archivo folder-size.csv. En su interior, tendremos nuestro listado de carpetas con sus tamaños.
Espero os sea de utilidad.