powershell

Eliminación de archivos antiguos Windows 10 – 11 y Powershell

Uno de los problemas que nos podemos encontrar en una máquina, ya sea cliente o servidor, es quedarnos sin espacio en disco.

Para solucionarlo, a veces es tan sencillo como borrar una carpeta y así conseguimos liberar espacio para «ir tirando». Otras veces no es tan sencillo, ya que depende de qué archivos tenemos, qué política tenemos a la hora de hacer una purga…

También, por exigencias del guion, tenemos que eliminar, por ejemplo, partes o justificantes caducados, copias de seguridad obsoletas.

Podemos automatizar estas tareas con un sencillo script con Powershell, el cuál recorre un path con todos sus subdirectorios y el archivo que sea más antiguo de 15 días, lo elimina.

$dias = "-15"
$limite = (Get-Date).AddDays($dias)
$path = "D:\Copias de Seguridad" 
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limite } | Remove-Item -Force -verbose 

$dias -> indico la antigüedad, en días, de los archivos que quiero eliminar.

$limite -> a través del cmdlet «Get-Date», con su atributo «AddDays» le pasamos un parámetro que calcula la fecha límite para decidir si el archivo se borra o no.

$path -> pasamos la ruta desde la que se van a analizar los archivos

En la acotación a la búsqueda, en la parte de «Where-Object» indico con !$_.PSIsContainer que solamente se seleccione archivos que no sean carpetas y con $_.CreationTime que los archivos tienen que ser más antiguos de la fecha que queramos al declararlo en la variable $dia.

Actualizar cuotas de directorios en FSRM con línea de comandos

Muchas veces tenemos configuradas o asignadas unas cuotas a ciertas rutas compartidas (o shares) para que los clientes no nos saturen el sistema de almacenamiento. Pero algunas veces, esas cuotas llegan al 100% de uso y el usuario borra el contenido total o parcial de la ruta con cuota y sigue teniendo problemas al añadir más contenido, ya que el porcentaje de uso no cambia.

En ocasiones, para solventar este problema, el administrador elimina la cuota y la vuelve a crear, con lo que el valor del porcentaje de uso se “actualiza” y de esa forma se “soluciona” el problema.

Pero realmente, el problema se va a volver a producir cuando se vuelva a llenar el directorio y se llegue al máximo que marca la cuota. Por eso, la mejor opción para actualizar el porcentaje de uso de una o varias cuotas es crear una tarea programada para actualizar los valores de dichas cuotas.

Actualizar las cuotas de directorios en FSRM se puede realizar de varias formas, a través de la consola del File Server Resource Manager o a través de línea de comandos (con cmd o con powershell).

CMD:

dirquota quota scan /path:[ruta de la cuota]

En las nuevas versiones de Windows Server funciona, pero Microsoft recomienda empezar a usar el cmdlet de PowerShell equivalente.

PowerShell:

foreach ($ruta in Get-FsrmQuota) { Update-FsrmQuota -path $ruta.path -Confirm:$false }

Con este método, en una sola línea, podemos refrescar todas las cuotas configuradas en un servidor. A continuación, explico el cmdlet:

  • Con Foreach guardo en la variable $ruta lo que va devolviendo Get-FsrmQuota, que es cada una de las cuotas configuradas en el servidor.
  • Get-FsrmQuota -> me devuelve el listado de todas las cuotas configuradas en el Servidor.
  • Update-FsrmQuota -> actualizo el porcentaje de uso de la cuota del directorio pasado por el parámetro -path.
  • -Path -> Como me interesa la propiedad “path” de $ruta, en el parámetro -path [ruta del directorio] indico $ruta.path