miércoles, 15 de junio de 2016

PS. Borrar ficheros y carpetas pasada una fecha


Se que lo siguiente que aquí explicaré hay muchas maneras de hacerlo, desde mucho más sencillas a mucho más complejas. La idea es hacer un pequeño PS para liberar espacio de nuestros discos sin nuestra intervención.

Informaremos cuantos días queremos que permanezca la información, el resto lo eliminará, este script solo dejará los ficheros con una antigüedad inferior a 30 días.

Esta GPO la complemento con otra GPO que uso para hacer Backups de GPOs y así evitar que no inunde el disco de información.

Import-Module grouppolicy
$date = get-date -format M.d.yyyy
$limit = (Get-Date).AddDays(-30)
$path = "C:\Backup\GroupPolicies"
$body1= "Proceso finalizado, las copias que quedan:"
$body2= dir $path
$bodyresult= $body1 + $body2

# Delete files older than the $limit.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force

# Delete any empty directories left behind after deleting the old files.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { $_.PSIsContainer -and (Get-ChildItem -Path $_.FullName -Recurse -Force | Where-Object { !$_.PSIsContainer }) -eq $null } | Remove-Item -Force -Recurse

#Send one email to inform
$PSEmailServer = "11.11.11.11"
Send-MailMessage -From "servidor@miempresa.es" -To "yo@miempresa.es" -Subject "Borrar GPOs 30 Dias de antiguedad DOMINIO.LOCAL" -Body "Finalizada el proceso de borrado de Backups de GPOs" -Body $bodyresult


La parte de color      es una añadido para ver el resultado de las carpetas que siguen si eliminarse (dir).


GoN. Jun 2016