Windows PowerShell Task Scheduler( Administrador de Tareas) Como Mantener un Directorio con Cierta Cantidad de Archivos.

Hola banda, iniciamos ese 2021 ya, les deseo que todos su planes, metas y deseos se cumplan, solo recuerden que no solo es desearlos, ahi que actuar en ellos, solos no llegan ni existen varitas magicas, bueno no me ha tocado usarlas…

Ahora regresando a este post, tengo un batch que saca respaldos de SQL Server bajo Windows 10 Pro, como sabran es importante los respaldos, han salvado vidas, lo he visto con mis propios ojos cuando el usuario llega solicitando recuperar ciertos archivos y con los ojos cristalinos por que por error borro un proyecto que tenia semanas trabajando.

Pues aca tenemos que respaldar SQL Server como lo mencione, mi batch saca respaldos todos los dias a cierta hora, por la operacion de negocio lo hace a las 8PM cuando ya nadie esta usando la base de datos la mayor parte del tiempo.

Este batch al estar en ejecucion continua, va creciendo la cantidad de respaldos que al final son archivos y llenando el espacio en nuestro equipo, entonces necesito mantener este directorio con archivos con un tiempo de vida de 15 dias, todo lo que no cumple este regla deben ser borrados.

Claro que hay otras implementaciones donde hay mayor espacio de almacenamiento y podemos tener soportar hasta 1+ meses de respaldos, cada empresa es distinta.

Aqui tenemos el directorio que deseamos mantener controlado con la cantidad de archivos.

Figura 1.

Ahorita cuando pesa en espacio y cuantos archivos tiene?

Figura 2.

171 archivos de respaldos y pesa 3.29GB.

Tenemos archivos con mas de 15 dias de creacion? si.

Figura 3.

Una vez que se ejecute el batch con PowerShell debe disminuir la cantidad de archivos y el peso del directorio.

Batch de PowerShell Para Borrar Archivos con N Numero de Dias de Creación.

Honor a quien honor se merece, yo estoy armando todo el proceso de como hacerlo y las herramientas que estoy usando ya para un administrador de sistemas.

El batch lo tome de este link: https://www.thomasmaurer.ch/2010/12/powershell-delete-files-older-than/

Para que no digan me los ando pirateando o saludando con sombrero ajeno como diriamos aca en Mexico, lo adapte a mis necesidades y lo probe como lo mencione anteriormente.

Borrar todos los archivos en C:\DB_Backups\Full con fecha de creacion con mas de 15 dias(s)
$Path = "C:\DB_Backups\Full"
$Daysback = "-15"

$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
Get-ChildItem $Path | Where-Object { $_.LastWriteTime -lt $DatetoDelete } | Remove-Item
Figura 4.

Yo uso Notepad para el batch, recuerden que este tipo de archivos deben terminar con la extension “ps1” para que PowerShell los reconozca, Windows trae un editor pero como les mencione, Notepad funciona o Notepad++, busquen el que mejor les guste.

En Notepad solo recuerden salvarlo como “Save as” o ‘Salvar Como”, asi ya les deja ingresar la extension que deseamos.

Figura 5.

Me gusta mucho enfocar estos detalles para los que vienen entrando a el mundo de sistemas en especial. Ya tenemos nuestro PowerShell batch, yo los almacene en “C:\batch”.

NOTA: Este batch ya lo probe en mi consola, ya sigue agregarlo para que se ejecute de manera automatica por Windows.

Task Scheduler Como Agregar el Power Shell Batch.

Ahora seguimos con el paso de como configurar la utileria de que tiene Windows de fabrica para programar tareas, la llamada ‘Task Scheduler’.

Ejecutamos esta aplicacion y creamos una nueva tarea como lo indica la siguiente figura, Microsoft lo hace sencillo.

Figura 6.
Figura 7.

Los datos a agregar con los marque, la descripcion es opcional pero se recomienda para cuando regresemos o nuevos miembros del equipo puedan entender rapido la finalidad de esta tarea.

Vamos a mover en cada pestaña, seguimos con ‘Triggers’.

Figura 8.

Asi es como lo necesito para esta implementación, este batch se ejecutara de Lunes a Viernes a las 8PM. Quedando asi:

Figura 9.

Pasamos a la pestaña ‘Actions’.

Figura 10.

No le den “Browse” ustedes pueden teclear el nombre del ejecutable de “PowerShell” y abajo hacen lo mismo indicando la ruta del batch y por ultimo salvan, quedando asi:

Figura 10.

Las siguientes pestañas ‘Conditions’ y ‘Settings’ no las necesito, entonces ya puedo darle click en el boton “OK”, Windows automaticamente me solicitara la clave del usuario el cual debe tener los permisos de “Administrador” para poder agregar, modificar o borrar tareas del “Task Scheduler”, entonces pongan atención aqui si su usuario no tiene esa autoridad, agregarsela.

Como este equipo esta haciendo la funcion de servidor para esta red, nadie lo usa por ello es conveniente que se almacene la clave por que es una tarea que se ejecutara de manera automatica.

Figura 11.

NOTA: Pongan atención cuando agreguen la clave yo me he equivocado, asi que cuidado aqui por que la tarea no se ejecutara y van andar pariendo cuates.

Asi queda mi tarea en Windows Task Scheduler.

Figura 12.

Ahora si la prueba de fuego, como lo mencione antes, este batch ya esta probadito. Pero ahora vamos a ejecutarlo directo del “Task Scheduler”.

Para ellos seleccionamos la tarea, boton derecho y ‘Run’ como lo indica la siguiente imagen.

Figura 13.
Figura 14.

Nuestra tarea en ejecución.

Como es una tarea que se ejecuta muy rapido, vamos a comparar antes y despues de correr la tarea, basados en la figura 2.

Figura 15.

Resumen.

Ya puedo estar seguro que mi directorio se mantendra con cierta cantidad de archivos de respaldo de SQL Server y no llenara el disco si no hay una manera de mantenerlo controlado. Ya puedo dormir tranquilo ademas que mi sistema de respaldo se esta llevando este contenido a la nube por si el equipo llegara a fallar.

Saludos y nos vemos pronto banda!!!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s