Se você não pode agrupar, mas você pode ter várias máquinas na mesma rede, então você pode envolver seu executável em um pouco de powershell.
No primeiro servidor, quando você o executa, você cria um arquivo para indicar sucesso. O segundo servidor, em seguida, executa um código separado para procurar pelo arquivo temporário. Se ele não existir, será iniciado.
Servidor 1
$strDateTime = Get-Date -Format ddMMyy-hh:mm
$strPathtoTempFile = "D:\TempFile"
$strPathtoEXE = "D:\BIN\file.exe"
IF((Test-Path $strPathtoTempFile) -eq 'True'){remove-item $PathtoTempFile}
Start-Process $strPathtoEXE -Wait
If($Lastexitcode -eq 0){$strDateTime | Out-File $strPathtoTempFile}
Salve isso como um arquivo .PS1 no servidor 1 e aponte sua tarefa agendada para "C: \ windows \ system32 \ windowspowershell \ v1.0 \ powershell.exe D: \ BIN \ script.ps1" .
Importante para testar se o seu executável retorna algo para $ Lastexitcode, se funcionar. De outro modo, ele nunca escreverá o arquivo de saída. O ponto disso é que ele irá capturar qualquer falha, mesmo se o servidor estiver disponível, mas o executável não for executado corretamente. Se isso não funcionar, tente '$?' no lugar de $ Lastexitcode. Isso retornará verdadeiro ou falso. Mais uma vez você precisará testá-lo.
No Servidor 2, execute-o como uma tarefa agendada, mas execute-o a cada cinco minutos, iniciando em 1 minuto pas a programação no primeiro servidor:
Servidor 2
$strDateTime = Get-Date -Format ddMMyy-hh:mm
$strPathtoTempFile = "\Server1\TempFile"
$strPathtoEXE = "D:\BIN\file.exe"
IF((Test-Path $strPathtoTempFile) -eq 'Flase')
{
Start-Process $strPathtoEXE
Send-Mailmessage -smtpserver smtp.server.com -to [email protected] -from [email protected] -subject "Launched on backup" -body "Executable failed on server1, ran from backup server on $strDateTime"
}
Isso deve fornecer um pouco da redundância de que você precisa.
* Eu não testei isso, mas você deve chegar perto