Programación tareas script powershell

Cómo crear programación de tareas con Script PowerShell

Compartir

Sigue leyendo si quieres aprender cómo crear programación de tareas con Script PowerShell para poder gestionar la ejecución de tus scripts de manera programada.

Muchos de nosotros, por un motivo u otro, terminamos necesitando programar tareas para conseguir que se ejecuten de manera automática cada cierto tiempo (por ejemplo, cada X horas, cada día, cada semana, etc.).

Es algo a lo que recurrimos para poder aliviar nuestra carga de trabajo como administradores o simplemente para no tener que recordar hacer ciertas tareas que no consideramos de gran importancia, o que, pese a ser de gran importancia nos resultan tediosas, repetitivas, o execrables de alguna manera.

Usualmente se utiliza el programador de tareas de manera manual, a través del entorno gráfico comúnmente llamado GUI (Graphic User Interface), pero como ya sabemos, aquí somos muy amigos de ahorrar tiempo usando elementos como PowerShell, que nos permite hacer este tipo de tareas de manera rápida y fácil.

Supongamos, por ejemplo, que queremos consultar el estado de los discos de nuestro servidor una vez a la semana para ver que no hay problemas, que no hay errores ni peligro de que fallen, y queremos hacerlo los lunes a las 15:45 horas (por ejemplo).

En este artículo solo nos centraremos en la parte de la programación, por lo que se recomienda consultar el artículo Cómo ver los discos que tienen errores mediante script de PowerShell para tener clara la parte de la monitorización de discos, aunque como es lógico, se puede aplicar casi cualquier script de PowerShell.

 

Programando la ejecución de un script de PowerShell a través de la consola de PowerShell:

NOTA: En este artículo suponemos que el lector quiere dar de alta la tarea en un servidor o un cliente más o menos actuales, por lo que vamos a trabajar con el cmdlet “New-ScheduledTaskTrigger”. En caso de querer trabajar con sistemas operativos con PowerShell 2.0 se debe trabajar con el cmdlet “TaskScheduler”, que opera de otra manera.

Lo primero que debemos hacer es crear un archivo con extensión “.ps1” en una ruta accesible para el usuario que va a crear y ejecutar la tarea. En mi caso, la ruta será «C:\Data\” y el ejecutable será “MonitorDiscosServidor.ps1», ya que seguimos con el ejemplo arriba descrito.

Dentro de ese archivo ejecutable introducimos el código del script de PowerShell que será lanzado mediante la ejecución programada, y personalmente recomendaría probar su ejecución, más que nada porque hoy, por ejemplo, me he vuelto loco depurando la programación de la tarea y el problema estaba en que al hacer copy/paste dentro del script se ha metido un caracter extraño que hacía fallar la ejecución.

A continuación debemos programar la tarea, y por desgracia, la primera vez que la programemos va a ser un poco largo de hacer, más que nada porque necesitamos acostumbrarnos a realizar estas tareas, pero después veremos lo rápido que es y el tiempo y la de errores que evitamos.

El script completo lo ponemos a continuación, explicando cada una de sus partes posteriormente:

$Programacion1= New-ScheduledTaskTrigger -Weekly -WeeksInterval 1 -DaysOfWeek Monday -At 2:40pm

$User= «administrador»

$Accion1= New-ScheduledTaskAction -Execute «PowerShell.exe» -Argument «C:\Data\MonitorDiscosServidor.ps1»

Register-ScheduledTask -TaskName «MonitorDiscosServidor» -Trigger $Programacion1 -User $User -Action $Accion1 -RunLevel Highest –Force

Donde:

  • $Programacion1 representa la variable donde se da la información de cada cuánto tiempo se ejecuta el programa. Esta en realidad, se introduce posteriormente en el disparador de la tarea (trigger).

La programación tiene la forma:

New-ScheduledTaskTrigger -Weekly -WeeksInterval 1 -DaysOfWeek Monday -At 2:40pm

Donde:

  • “New-ScheduledTaskTrigger”: define la creación de un nuevo disparador.
  • -Weekly -WeeksInterval 1: Indica que se lanzará semanalmente, con una ejecución cada semana, si por ejemplo definiéramos “-Weekly -WeeksInterval 2” estaríamos diciendo que se ejecuta cada dos semanas.
  • -DaysOfWeek Monday: En este caso decimos que se ejecutará cada lunes (Monday).
  • -At 2:40pm: Y en este caso se dice que se ejecutará a las 2:40pm. Ojo al uso del “AM/PM).

Otro punto a tener en cuenta es con qué usuario se va a ejecutar, que en este caso lo programamos con el usuario “administrador”.

$User= «administrador»

Ahora revisaremos la parte de “Acción”:

$Accion1= New-ScheduledTaskAction -Execute «PowerShell.exe» -Argument «C:\Data\MonitorDiscosServidor.ps1»

Donde:

  • $Accion1: Es la variable de lo que se va a ejecutar.
  • New-ScheduledTaskAction: Es el cmdlet de nueva tarea programada, y a continuación se ponen los parámetros a ejecutar.
  • -Execute «PowerShell.exe»: Lo que ejecuta es el comando PowerShell.
  • -Argument «C:\Data\MonitorDiscosServidor.ps1»: Pasando como argumentos la ruta del script con extensión “.ps1”. Es importante poner la ruta absoluta para evitar problemas.

En este punto, pasamos a revisar el comando de registro de la tarea programada:

Register-ScheduledTask -TaskName «MonitorDiscosServidor» -Trigger $Programacion1 -User $User -Action $Accion1 -RunLevel Highest –Force

Donde:

  • Register-ScheduledTask: Este es el cmdlet para el registro de la tarea
  • -TaskName «MonitorDiscosServidor»: Le damos un nombre distintivo a la tarea.
  • -Trigger $Programacion1: En este momento se pasa el disparador con la variable declarada previamente y que ya hemos explicado.
  • -User $User: Proporcionamos el usuario que ejecutará la tarea.
  • -Action $Accion1: Proporcionamos la acción a ejecutar y que viene declarada por la variable declarada previamente y que ya hemos explicado.
  • -RunLevel Highest: Lanzamos la tarea a alto nivel.
  • –Force: Forzamos la ejecución.

Como siempre, recomiendo usar PowerShell ISE (Editor de desarrollo de PowerShell) ya que nos permitirá trastear con los comandos, probar y depurar.

Cuando lo tengamos todo claro, tocará lanzar los comandos y, si todo va bien, podremos ver mensajes en la consola como los que se muestran en la captura.

Imagen. Damos de alta la tarea programada para lanzar un script PowerShell
Imagen. Damos de alta la tarea programada para lanzar un script PowerShell

Tocará esperar un rato hasta la hora programada, que personalmente también recomiendo programar una prueba, inicialmente para dentro de 5 minutos (por ejemplo) para poder comprobar la ejecución.

Y tras la ejecución, se recomienda hacer la comprobación de que está todo como esperábamos, depurando aquello que sea necesario.

Imagen. Comprobamos la ejecución de la tarea programada del script PowerShell
Imagen. Comprobamos la ejecución de la tarea programada del script PowerShell

NOTA: En caso de que haya quedado alguna duda o se quiera ampliar la información sobre los cmdlets que hemos usado, se puede consultar la ayuda de consola de PowerShell (que usa un sistema parecido al MAN de UNIX), o la Web de New-ScheduledTaskTrigger.

 

Conclusiones y próximos pasos:

El proceso descrito en este artículo, cómo crear programación de tareas con Script PowerShell, permite realizar configuraciones de tareas programadas con comandos de PowerShell, y en este caso, siendo un poco redundantes, lanzando scripts de PowerShell.

La creación y ejecución se realiza en muy pocos pasos, tal como se ha podido ver en este artículo. Puedes aprender otras cosas sobre PowerShell consultando nuestro blog.

Esperamos que con esta pequeña guía no tengas problemas, pero si los tuvieras, no dudes en contactar con nosotros para que podamos echarte una mano.

¡Gracias por tu confianza!

Categorías:Recursos Sysadmin

Otros posts que te pueden interesar

13 de noviembre de 2024
¡Tenemos nuevas distros en Servidores! En respuesta a las múltiples solicitudes de varios de nuestros partners, se ha habilitado
13 de noviembre de 2024
¡Ya es posible desplegar plantillas de diferentes softwares desde el asistente de despliegue de servidores! Estrenamos esta funcionalidad del
13 de noviembre de 2024
¡Integración con QNAP! Ya es posible crear copias sincronizadas entre dispositivos de almacenamiento local QNAP y nuestro servicio de

Rellena el formulario y nuestro equipo de Sales contactará contigo lo antes posible.

growth@jotelulu.com  |  +34 911 333 712  |  jotelulu.com 

Puedes darte de baja de estas comunicaciones en cualquier momento.  Consulta nuestra Política de privacidad.

Precios competitivos para la pyme y mucho más margen para el partner

Disaster Recovery ha sido diseñado, implementado y puesto en producción teniendo en cuenta dos premisas: Debe tener un precio atractivo para la pyme a la vez que deja un buen margen de beneficio a la empresa de IT que lo comercializa y gestiona.

DR_buen_precio_y_mas_margen

De esta manera, Disaster Recovery pretende ser un producto diferencial que permita incrementar la seguridad de todo tipo de empresas de manera asequible e implicando, además, rentabilidad para el distribuidor que lo comercializa.

Protege la infraestructura de tus clientes

Disaster Recovery permite replicar cualquier suscripción de infraestructura (Escritorio Remoto y Servidores) en otra zona de disponibilidad creando un entorno de alta disponibilidad y blindando así el servicio.

Replica en pocos pasos no sólo los discos sino todos los elementos que forman parte de cada suscripción:

  • Servidores: Instancias, discos, reglas de firewall, redes, IPs…
  • Escritorio Remoto: Usuarios, Aplicaciones, Licencias, Personalización…
DR_blinda_la_infraestructura

Tratamos de hacer fácil lo difícil

Las herramientas de Disaster Recovery existentes necesitan de conocimientos avanzados para poder ser gestionadas, implicando, muchas veces, un expertise difícil de alcanzar.

 

Disaster Recovery de Jotelulu busca hacer fácil lo difícil y plantea un despliegue muy sencillo basado en una configuración de tres pasos:

Origin (Primary Site)
Determina la ubicación de origen de la suscripción sobre la que se va a establecer el servicio de Disaster Recovery.

Destino (Recovery Site)
Establece la ubicación de destino (zona de disponibilidad) en la que quieres que se despliegue el Recovery Site.

Características de la réplica
Establece los datos asociados al número de copias que se quieren guardar y la frecuencia con la que se va a llevar a cabo la réplica.