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

Fazer com que o Programador de Tarefas do Windows me alerte sobre falhas

Tenho um guião automatizado que faz cópias de segurança do meu website para o meu computador local. Este guião pode falhar; uma vez que o meu servidor estava em baixo, noutra altura movi acidentalmente o meu guião.

Como faço para que o Scheduler de Tarefas do Windows me diga que o script falha (ou não corre/não é encontrado)?

Não me interessa se surge uma solicitação, um e-mail ou algo que apareça no meu ambiente de trabalho. Quero ser notificado se algo correr mal. No meu servidor, a crontab envia-me e-mails sobre erros - o que é óptimo. Quero algo do género no meu computador local Windows 7.

Respostas (3)

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

Quando uma tarefa agendada não começa, um evento é escrito no TaskScheduler log de eventos:

Nota: O registo do Agendador de Tarefas está localizado em (em Ferramentas Administrativas)

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

Windows permite-lhe acionar tarefas agendadas para iniciar quando uma variedade de eventos acontece, por exemplo

  • hora do dia
  • arranque do sistema
  • login do utilizador
  • evento registado no registo de eventos*

Armado com este conhecimento, pode criar uma tarefa agendada que corre quando a sua tarefa agendada falha:

A acção desta tarefa agendada pode então ser definida para algo que lhe envie um alerta - na sua escolha de métodos (por exemplo, desencadeia um encerramento). Poderá querer apenas que envie um e-mail:

É assim que o Windows lida com tudo. Pode ver muitas tarefas de diagnóstico que desencadeiam um evento que aparece no registo. por exemplo, quando um conflito de endereço IP é detectado, um evento é escrito no registo:

  • Log: Sistema
  • Source: Tcpip
  • Event ID: 4198

Uma tarefa agendada desencadeia este evento, e executa um programa para o informar e para o corrigir. Tenha em mente que o ID do evento não é específico de apenas uma tarefa. Qualquer tarefa que gere o evento 203 - A acção falhou em iniciar, desencadeará esta tarefa.

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

Aqui está o meu script para me alertar quando o meu trabalho de backup tem um valor superior a 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

Dê uma vista de olhos em PushMon . Pode criar uma URL PushMon que será chamada no final do seu script. Se o seu script não for executado porque o servidor foi desligado ou o script foi movido, será notificado. Pode ser notificado por e-mail, SMS, chamada telefónica, IM e Twitter. Isto funcionará para qualquer sistema operativo. Isto é como o Pingdom, mas para scripts e tarefas de fundo.