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.