Actualmente estoy usando PowerShell y el Programador de tareas para automatizar una tarea para la empresa donde trabajo actualmente. Este script actualiza una lista e idealmente se ejecutará cada 10 minutos. La computadora que usamos para ejecutar este script recurrente puede estar un poco chiflada y se apagará aleatoriamente. Estoy tratando de encontrar una manera de recibir alertas si la computadora que ejecuta el script está desconectada.
La forma principal en que pienso hacer esto sería configurar una notificación para cada vez que se ejecute el programa y luego hacer que un segundo script verifique la notificación. Si falta una notificación que indique que el script no se ejecutó, envía una alerta. Encontré una respuesta que me lleva parcialmente a una respuesta, pero no creo que funcione si la máquina se apaga.
Hacer que el Programador de tareas de Windows me avise en caso de error
Gracias por su tiempo para ayudar con esta pregunta.
Respuesta1
Estoy de acuerdo con otros comentarios. Necesitaría una segunda máquina que ejecute una prueba de conectividad o algo por el estilo en la máquina que ejecuta el otro código para detectar una falla. Aquí hay un script de PowerShell de muestra que le enviaría un correo electrónico si no recibiera una respuesta de ping exitosa de la otra máquina. El siguiente código supone que utiliza 0ffice365 mail/exchange en línea, pero puede modificarse según lo que utilice.
$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
}
Esto se puede configurar para que se ejecute cada 10 minutos en otra máquina. Si detecta una conexión, no hará nada. Si no recibe respuesta, le enviará un correo electrónico.
Respuesta2
Estoy de acuerdo con Worthwelle. Sería necesario que hubiera otra máquina que monitoreara el estado de la máquina donde se ejecutaba ese script. En este caso, si hubiera una máquina que fuera lo suficientemente confiable como para monitorear la primera máquina, entonces también podría ejecutar el script en esa máquina. La mejor solución... corrija el problema que provoca que la máquina que ejecuta el script falle o simplemente reemplácelo.