Fazer o Agendador de Tarefas do Windows me alertar quando houver falha

59

Eu tenho um script automatizado que extrai backups do meu site para o meu computador local. Esse script pode falhar; uma vez que o meu servidor caiu, outra vez eu acidentalmente movi meu script.

Como faço com que o Agendador de Tarefas do Windows me diga que o script falha (ou não é executado / não encontrado)?

Eu não me importo se um prompt aparecer, um e-mail ou algo que apareça na minha área de trabalho. Eu 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 windows 7.

    
por Eliran Malka 22.02.2011 / 22:15

3 respostas

83

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

Observação: 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

OWindowspermitequevocêacionetarefasagendadasparainiciarquandoumavariedadedeeventosacontecer,porexemplo:

  • horadodia
  • inicializaçãodosistema
  • logindousuário
  • eventoregistradonologdeeventos

Comesseconhecimento,vocêpodecriarumatarefaagendadaquesejaexecutadaquandoatarefaagendadafalhar:

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

É 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
  • Origem: Tcpip
  • ID do evento: 4198

Uma tarefa agendada é acionada neste evento e executa um programa para informá-lo e corrigi-lo. Tenha em mente 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, irá desencadear esta tarefa.

    
por 22.02.2011 / 23:13
10

Aqui está 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 = "[email protected]"
    $Pass = ConvertTo-SecureString -String "myPassword" -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PSCredential $User, $Pass
################################################################################

$From = "Alert Scheduled Task <[email protected]>"
$To = "Me Gmail <[email protected]>"
$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
}
    
por 15.01.2016 / 21:59
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 for executado porque o servidor estava inativo ou o script foi movido, você será notificado. Você pode ser notificado por e-mail, SMS, telefonema, mensagens instantâneas e Twitter. Isso funcionará para qualquer sistema operacional. Isso é como o Pingdom, mas para scripts e tarefas em segundo plano.

    
por 01.06.2012 / 15:42