Una de las tareas comunes en la administración de servidores es el hecho de tener que realizar de forma periódica un borrado de archivos de Log, de aplicaciones o de servicios como IIS, por ejemplo una politica puede ser "conservar los archivos de log por 6 dias", asi que tenemos que programar una tarea en el servidor para que cada dia (semana, hora, etc) se ejecute la limpieza.
en este post les dejo un script de PowerShell que permite borrar todos los archivos con extensión ".log " en un directorio (y sus subdirectorios), que sean mas viejos que un numero de dias especificado
$pattern = $args[0] + '\*'
$files = Get-ChildItem $pattern -include *.log -Recurse $days = $args[2] $count = 0; $date = Get-Date "Clean Old IIS Log Files Started $date" | Out-File $args[1] -append -noclobber if ($files.count -gt 1) { foreach($file in $files) { $mark = ((Get-Date) - $file.CreationTime).Days if ($mark -gt $days -and $file.PsISContainer -ne $True) { "file found $file" | Out-File $args[1] -append -noclobber $count += 1; $file.Delete() } } } "Total Deleted Files $count" | Out-File $args[1] -append -noclobber
la forma de usarlo es la siguiente (con algunas simplificaciones) ( borrar todos los archivos con extension .log de la carpeta de logs del IIS, con mas de 30 días de antiguedad
powershell -NoProfile -ExecutionPolicy unrestricted -Command "C:\Task\clear_log.ps1 C:\inetpub\logs\LogFiles C:\Task\out.log 30"
en out.log se escribe el detalle de los archivos eliminados, la hora de ejecucion y el numero total de archivos.
en este post les dejo un script de PowerShell que permite borrar todos los archivos con extensión ".log " en un directorio (y sus subdirectorios), que sean mas viejos que un numero de dias especificado
$pattern = $args[0] + '\*'
$files = Get-ChildItem $pattern -include *.log -Recurse $days = $args[2] $count = 0; $date = Get-Date "Clean Old IIS Log Files Started $date" | Out-File $args[1] -append -noclobber if ($files.count -gt 1) { foreach($file in $files) { $mark = ((Get-Date) - $file.CreationTime).Days if ($mark -gt $days -and $file.PsISContainer -ne $True) { "file found $file" | Out-File $args[1] -append -noclobber $count += 1; $file.Delete() } } } "Total Deleted Files $count" | Out-File $args[1] -append -noclobber
la forma de usarlo es la siguiente (con algunas simplificaciones) ( borrar todos los archivos con extension .log de la carpeta de logs del IIS, con mas de 30 días de antiguedad
powershell -NoProfile -ExecutionPolicy unrestricted -Command "C:\Task\clear_log.ps1 C:\inetpub\logs\LogFiles C:\Task\out.log 30"
en out.log se escribe el detalle de los archivos eliminados, la hora de ejecucion y el numero total de archivos.
Comentarios
Publicar un comentario