JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Las tareas programadas periódicas de Windows Server 2016 no funcionan, pero tampoco dan error

El programador de tareas de Windows lleva estando presente en el sistema desde hace varios lustros y, desde su aparición, Microsoft apenas lo ha tocado. Y si no lo hubiera tocado, para ser francos, hubiera hecho mejor ya que las veces que lo toca, normalmente lo estropea. Por ejemplo, en Windows Server 2012 le quitaron (o al menos marcaron como obsoleto) la posibilidad de enviar emails, algo que sí era posible en versiones anteriores (aunque era muy limitado, ya que no te permitía autenticarte en el servidor de correo). Y en Windows Server 2016 no le quitaron nada, pero hicieron que algunas cosas funcionen fatal, como todos los problemas que da ejecutar archivos de script (.wsf) o .bat, el problema de la barra inclinada al final de las rutas, o lo que veremos a continuación entre otras cosas...

En mi opinión me parece increíble que un sistema tan potente y con tantas posibilidades como Windows Server (especialmente en su última versión, la 2016) tenga un programador de tareas tan "así". Y más habida cuenta lo útil que es y las posibilidades que te da este tipo de software para llevar a cabo todo tipo de acciones, ante eventos o periódicamente, para mantenimientos y muchas otras cosas. Nada que ver con cron en Linux, que si bien es mucho más espartano, funciona de maravilla y te permite hacer configuración de tareas desde la línea de comandos. Lo peor del caso es que Microsoft sabe de estos problemas hace mucho tiempo y no los prioriza para solucionarlos.

Lo cierto es que, en Windows 2016, mi recomendación sería utilizar algún sistema de programación de tareas alternativo. Lo malo es que los que hay en el mercado suelen ser muy potentes pero muy caros (o muy antiguos, casi pensados para Windows XP 😣) y además añades más carga al servidor. Así que lo más normal, al menos en mi caso, es seguir usando lo que nos da el sistema de serie, y lidiar con sus "particularidades".

El problema con las tareas repetitivas de "ejecutar solo una vez"

Una de las "particularidades" (existen más) del programador de tareas de Windows Server 2016 es que, en muchas ocasiones, cuando creas una tarea periódica que se repite en el futuro, no te va a funcionar. Y tampoco te da error, y si te atienes a la información que te muestra todo está correcto, pero no funciona.

Por ejemplo, fíjate en la programación de esta tarea:

La he creado esta mañana (a las 13:00), sin habilitarla, y la he marcado para que se repita cada hora a partir de esa fecha. Aparentemente todo está OK y lo que debería ocurrir es que, en cuanto la habilite, cada hora se ejecutará para llevar a cabo la tarea. De hecho, si ves la tarea en el listado de las mismas, lo pondrá muy claro:

Ahí dice que la hora de próxima ejecución es hoy a las 19:00:00 (en el momento de escribir esto son las 18:02), y si dejamos que pase el tiempo lo irá cambiando también, de la manera esperada. El problema es que, a pesar de lo que diga, no funcionará.

El problema viene de que si utilizas como fecha y hora de inicio un valor anterior al momento de habilitar la tarea, el servicio interpreta que se debe empezar a repetir a partir de ese momento, literalmente, y como ese tiempo ya ha pasado, el resultado es que no la ejecuta jamás. Eso a pesar de que indica cuál será supuestamente la fecha de la siguiente ejecución, como vemos en la figura anterior. Es totalmente de chiste, pero uno de los de no reírse mucho 🤯

Lo peor del asunto es que si deshabilitas la tarea por el motivo que sea y luego la vuelves a habilitar, de repente te deja de funcionar. Y lo más probable es que ni siquiera te des cuenta.

Existen dos soluciones:

La primera es la obvia: tener en cuenta este problema y cada vez que toquemos la tarea o la habilitemos tras haberla deshabilitado previamente, editar el disparador de la misma y asegurarse de que le ponemos una fecha y hora de inicio en el futuro, aunque sea solo un minuto o dos después de la hora actual. Pero es muy fácil olvidarse y desde luego no es muy operativo que digamos.

La otra es un poco menos intuitiva, pero también funciona. Consiste en cambiar la programación para que sea una tarea de ejecución diaria con repetición. Por ejemplo, en nuestro caso podríamos hacer esto:

Lo que hacemos es poner que se debe ejecutar todos los días a una determinada hora (la que sea da más o menos igual, aunque si la rehabilitamos y queremos que empiece ya, deberíamos poner una próxima a cuando lo hagamos), y le indicamos además que debe repetirse cada "x" tiempo (en nuestro ejemplo, cada hora) durante un día entero.

Lo que tenemos con esto es una tarea que cada día se "rehabilita" automáticamente, al llegar la hora indicada. En el peor de los casos no empezará a ejecutarse hasta el día siguiente a la hora especificada, y luego se irá repitiendo durante todo el día con la periodicidad que le indiquemos.

Una verdadera chapuza, pero funciona.

¡Espero que te resulte útil!

José Manuel Alarcón José Manuel Alarcón
Fundador de campusMVP.es, el proyecto de referencia en formación on-line para programadores en lengua española. Autor de varios libros y cientos de artículos. Galardonado como MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.
Descarga GRATIS mi último libro (no técnico): "Tres Monos, Diez Minutos".
Banner

Comentarios (3) -

Creo que no es sólo de Windows Server 2016, algún cliente tiene Server 2008 (si por desgracia) y ya pasaba lo mismo. O pones la hora de ejecución unos minutos más tarde antes de cerrar la ventana de configuración o... Lo has descrito muy bien te dice que está activa, te da la próxima de hora ejecución pero "ni flowers".
Gracias por estos post que otros no escribimos y tu compartes con "la comunidad".

Responder

by Jose M. Alarcon

Hola Isra:

Curioso.. La verdad es que yo he manejado muchos Windows Server 2008 y no he tenido ese problema. Puede que los míos al ser casi todos 2008 R2 no lo tuvieran. El caso es que parece mentira que algo tan importante como el programador de tareas lleve tantos años manga por hombre.

Gracias por comentar (y por agradecer que lo publique: siempre ayuda a seguir haciéndolo)

Saludos!

Responder

Bueno llegué hasta aquí buscando a una solución al mismo problema, tenía un WS2003 que funcionaba bien (si funciona no lo toques) entre ello las tareas programadas, por cuestiones de compatibilidad de un software dí el salto a WS2016, todo muy bonito hasta darme cuenta que mis tareas programadas no ejecutaban a la hora especificada, voy aplicar tus recomendaciones y ya contaré mis resultados, gracias y saludos.

Responder

Agregar comentario