Se um script falhar porque o computador foi desligado ou se o script achar que está funcionando bem, mas não está, como acionar o alerta de falha?

Se um script falhar porque o computador foi desligado ou se o script achar que está funcionando bem, mas não está, como acionar o alerta de falha?

Atualmente, estou usando o PowerShell e o Agendador de tarefas para automatizar uma tarefa para a empresa onde trabalho atualmente. Este script atualiza uma lista e, idealmente, será executado a cada 10 minutos. O computador que usamos para executar esse script recorrente pode ser um pouco instável e será desligado aleatoriamente. Estou tentando encontrar uma maneira de receber alertas se o computador que executa o script estiver offline.

A principal maneira que estou pensando em fazer isso seria configurar uma notificação para cada vez que o programa for executado e, em seguida, fazer com que um segundo script verifique a notificação. Se houver uma notificação ausente indicando que o script não foi executado, ele enviará um alerta. Encontrei uma resposta que me leva parcialmente a uma resposta, mas não acho que funcionaria se a máquina fosse desligada.

Faça com que o Agendador de Tarefas do Windows me alerte em caso de falha

Obrigado pelo seu tempo ajudando com esta questão.

Responder1

Eu concordo com outros comentários. Você precisaria de uma segunda máquina executando um teste de conectividade ou algo do tipo para a máquina que está executando o outro código para detectar uma falha. Aqui está um exemplo de script do PowerShell que enviaria um e-mail para você se não obtivesse uma resposta de ping bem-sucedida da outra máquina. O código a seguir pressupõe que você use 0ffice365 mail/exchange online, mas pode ser alterado para o que você usar.

$testComputer = ping 1.1.1.1 -n 1 | select-string "Sent"  #replace the 1.1.1.1 with your server that fails

if($testComputer -match 'Sent = 1')
{
    write-host("Connection to computer running scheduled task is good.")
}
else
{
    write-host("Connection to computer running scheduled task has failed. Check to see if it is offline.")
    $computerParamsFailed = "Connection to computer running scheduled task has failed. Check to see if it is offline." 

    $username="[email protected]"  #replace with email
    $password=ConvertTo-SecureString "PASSWORDHERE"-AsPlainText -Force  #replace what is in quotes with your email password
    $mycredentials = New-Object System.Management.Automation.PSCredential ($username, $password)

    Send-MailMessage -To [email protected] -subject "Computer has gone offline." -body $computerParamsFailed -UseSsl -Port 587 -SmtpServer smtp.office365.com -From $username -Credential $mycredentials
    #change "to" email value 
}

Isso pode ser configurado para ser executado a cada 10 minutos em outra máquina. Se detectar uma conexão, não fará nada. Se não obtiver resposta, ele lhe enviará um e-mail.

Responder2

Concordo com Worthwelle. Seria necessário haver outra máquina monitorando o status da máquina onde o script estava sendo executado. Nesse caso, se houvesse uma máquina confiável o suficiente para monitorar a primeira máquina, você poderia simplesmente executar o script nessa máquina. Melhor solução... corrija o problema que faz com que a máquina que executa o script trave ou simplesmente substitua-a.

informação relacionada