Windows服务器任务计划程序:运行预定的可执行文件安全吗?

我有一个可执行文件,我计划每五分钟运行一次(使用Window的内置任务计划程序)。 运行这个可执行文件是至关重要的,因为它会更新很less的时间关键文件。 但是如果运行可执行文件的虚拟服务器出现故障,我该如何反应呢? 在运行之间不应该有超过15分钟的rest时间。

当我使用Windows Server及其任务计划程序时,我想知道是否可以创build某种自动处理这种情况的群集? 问题是有问题的服务器在Windows Azure上运行,我不认为我可以使用虚拟机创build实际的集群。

如果问题可以使用第三方工具来解决,那也行。 概括一下这个问题:如何确保一个可执行文件每5分钟运行一次,即使可能存在服务器故障?

如果你不能集群,但你可以在同一个networking上有多台机器,那么你可以将你的可执行文件封装在一些PowerShell中。

在执行第一台服务器时,您将创build一个文件来指示成功。 第二台服务器然后运行单独的代码来查找该临时文件,如果它不存在,它将启动。

服务器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} 

将其另存为服务器1上的.PS1文件,并将您的计划任务指向“C:\ windows \ system32 \ windowspowershell \ v1.0 \ powershell.exe D:\ BIN \ script.ps1”

重要的是testing你的可执行文件返回的东西,如果$ Lastexitcode有效。 其他方面,它永远不会写输出文件。 这一点是,即使服务器可用,但是可执行程序未能正确执行,它将捕获任何故障。 如果这不起作用,请尝试'$?' 代替$ Lastexitcode。 这将返回True或False。 再次,你将需要testing它。

在服务器2上运行它作为一个计划的任务,但运行它每隔五分钟开始在1分钟通过第一台服务器上的时间表:

服务器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" } 

这应该给你一点你需要的冗余。

*我没有testing过,但应该让你closures