2011-02-22 21:15:46 +0000 2011-02-22 21:15:46 +0000
69
69

Hacer que el Programador de Tareas de Windows me avise al fallar

Tengo un script automatizado que extrae las copias de seguridad de mi sitio web a mi ordenador local. Este script puede fallar; una vez mi servidor se cayó, otra vez moví accidentalmente el script.

¿Cómo hago para que el Programador de Tareas de Windows me avise cuando el script falla (o no se ejecuta/no se encuentra)?

No me importa si aparece un aviso, un correo electrónico o algo que aparezca en mi escritorio. Quiero que se me notifique si algo va mal. En mi servidor, crontab me envía correos electrónicos sobre los errores, lo cual es genial. Quiero algo así en mi ordenador local con Windows 7.

Respuestas (3)

89
89
89
2011-02-22 22:13:57 +0000

Cuando una tarea programada no se inicia, se escribe un evento en el registro de eventos TaskScheduler:

Nota: El registro del Programador de Tareas se encuentra en (en Herramientas Administrativas)

Computer Management
    System Tools
       Event Viewer
          Application and Services Logs
             Microsoft
                Windows
                   Task Scheduler
                      Operational

Windows le permite desencadenar tareas programadas para que se inicien cuando se produzcan diversos eventos, por ejemplo

  • hora del día
  • inicio del sistema
  • inicio de sesión del usuario
  • evento registrado en el registro de eventos

Armado con este conocimiento, puede crear una tarea programada que se ejecute cuando su tarea programada falle:

La acción de esta tarea programada puede establecerse en algo que le envíe una alerta - en los métodos que usted elija (por ejemplo, desencadena un apagado). Puede que sólo quiera que envíe un correo electrónico:

Así es como Windows maneja todo. Puedes ver muchas tareas de diagnóstico que se activan al aparecer un evento en el registro. Por ejemplo, cuando se detecta un conflicto de direcciones IP, se escribe un evento en el registro:

  • Log: Sistema
  • Fuente: Tcpip
  • Identificación del evento: 4198

Una tarea programada se dispara en este evento, y ejecuta un programa para informarle y solucionarlo. Tenga en cuenta que el ID del evento no es específico de una sola tarea. Cualquier tarea que genere el evento 203 - Acción no iniciada, activará esta tarea.

14
14
14
2016-01-15 20:59:39 +0000

Este es mi script para que me avise cuando mi trabajo de copia de seguridad tiene un valor mayor que 0.

$ScheduledTaskName = "Hans\Backup"
$Result = (schtasks /query /FO LIST /V /TN $ScheduledTaskName | findstr "Result")
$Result = $Result.substring(12)
$Code = $Result.trim()

If ($Code -gt 0) {
    $User = "mymail@gmail.com"
    $Pass = ConvertTo-SecureString -String "myPassword" -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PSCredential $User, $Pass
################################################################################

$From = "Alert Scheduled Task <mymail@gmail.com>"
$To = "Me Gmail <mymail@gmail.com>"
$Subject = "Scheduled task 'Backup' failed"
$Body = "Error code: $Code"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"

Send-MailMessage -From $From -to $To -Subject $Subject `
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
-Credential $Cred
}
7
7
7
2012-06-01 13:42:17 +0000

Echa un vistazo a PushMon . Puedes crear una URL PushMon que será llamada al final de tu script. Si tu script no se ejecuta porque el servidor se ha caído o el script se ha movido, recibirás una notificación. Puedes recibir una notificación por correo electrónico, SMS, llamada telefónica, IM y Twitter. Esto funcionará para cualquier sistema operativo. Es como Pingdom pero para scripts y tareas en segundo plano.