Faça o Agendador de tarefas do Windows me alertar sobre falha


65

Eu tenho um script automatizado que extrai backups do meu site para o meu computador local. Este script pode falhar; quando meu servidor estava inoperante, outra vez acidentalmente movi meu script.

Como faço para o Windows Task Scheduler me dizer que o script falhou (ou não é executado / não foi encontrado)?

Não me importo se um prompt aparecer, um email ou algo que apareça na minha área de trabalho. Quero ser notificado se algo der errado. No meu servidor, o crontab me envia um e-mail sobre erros - o que é ótimo. Eu quero algo assim no meu computador local com Windows 7.


localizou os IDs de evento do planejador de tarefas pelo menos mnaoumov.wordpress.com/2014/05/15/task-scheduler-event-ids

Respostas:


87

Quando uma tarefa agendada falha ao iniciar, um evento é gravado no log de eventos TaskScheduler :

Nota: O log 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

insira a descrição da imagem aqui

Windows permite que você acionar tarefas agendadas para começar quando uma variedade de eventos acontecem, por exemplo:

  • hora do dia
  • inicialização do sistema
  • login de usuário
  • evento registrado no log de eventos

Armado com esse conhecimento, você pode criar uma tarefa agendada que será executada quando sua tarefa agendada falhar:

insira a descrição da imagem aqui

A ação dessa tarefa agendada pode ser definida como algo que envia um alerta - na sua escolha de métodos (por exemplo, aciona um desligamento). Você pode apenas querer enviar um e-mail:

insira a descrição da imagem aqui

É assim que o Windows lida com tudo. Você pode ver muitas tarefas de diagnóstico que são acionadas em um evento que aparece no log. por exemplo, quando um conflito de endereço IP é detectado, um evento é gravado no log:

  • Log: Sistema
  • Fonte: Tcpip
  • ID do Evento: 4198

Uma tarefa agendada é acionada nesse evento e executa um programa para informá-lo e corrigi-lo. Lembre-se de que o ID do evento não é específico para apenas uma tarefa. Qualquer tarefa que gere o evento 203 - Ação falhou ao iniciar, acionará esta tarefa.


2
Você obtém a identificação do evento no log de eventos (203 e 103). Você pode ver os IDs do evento na captura de tela (203 e 103). Ou eu posso dizer-lhe o ID de evento de: 203 e 103.
Ian Boyd

5
O que você faz se a segunda tarefa falhar!?!?
William Jackson

3
@WilliamJackson Crie um evento que encerre a máquina. Alguém será definitivamente alertado para um problema então.
Ian Boyd

11
Na verdade, se a 2ª tarefa falhar, ela iniciará a 2ª tarefa que falhará, que iniciará a 2ª tarefa que falhará, que iniciará a 2ª tarefa que irá ... você entendeu a idéia. Acabei de descobrir isso da maneira mais difícil = /
Rob Penridge 19/10/12

6
Isso não alerta se uma tarefa falha , apenas se ela falha ao iniciar . Não 'e a mesma coisa.
precisa saber é

11

Aqui está o meu script para me alertar quando meu trabalho de backup tiver um valor maior 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
}

Essa é uma boa opção, pois a resposta selecionada atualmente usa um recurso obsoleto do Windows.
John Hargrove

Lembre-se de que esta é uma solução criada especificamente para usuários com Windows no idioma inglês. O argumento para 'encontrar' deve ser alterado de acordo com o idioma do usuário definido no Windows.
Eda190

7

Dê uma olhada no PushMon . Você pode criar um URL PushMon que será chamado no final do seu script. Se o seu script não executar porque o servidor estava inoperante ou o script foi movido, você será notificado. Você pode ser notificado por e-mail, SMS, telefonema, mensagem instantânea e Twitter. Isso funcionará para qualquer sistema operacional. É como o Pingdom, mas para scripts e tarefas em segundo plano.


11
Se você adicioná-lo ao final do seu script e o script está faltando (por exemplo, mudou-se), como é suposto a obter called‽
Bob

3
Como o script foi movido e o URL não foi chamado, você receberá um alerta.
Bienvenido David

11
Tentando visitar o site deles; ironicamente, parece ser baixo ..
Isaac Kleinman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.