启动服务前检查服务器

Check server before starting service

我需要编辑脚本。在两个 Windows Server 2008 R2 上有一项服务。它们是负载平衡的。我需要它,所以当我 运行 在主服务器和辅助服务器上启动服务的脚本时,所以在它甚至在两台服务器上启动服务之前,出去检查以确保主服务器已启动并且 运行ning,然后继续正常启动两台服务器上的服务。

# Start Appian
function StartAppian {
  $APNSVC = Get-Service -Name $AppianService

  if (!$APNSVC) {
    Write-Host "Appian Service does not exist"
    return
  }
  # Check to see if Appian's service is already started
  if ($APNSVC.Status -eq "Running") {
    if ($LB) {
      if ($MULEAPNSVC.Status -eq "Running") {
        Write-Host "Appian Service on the Load Balanced Server already is started!" -ForegroundColor Yellow
        return
      }
    }

    Write-Host "Appian Service already is started!" -ForegroundColor Yellow
    Read-Host "Press any key to return"
    return
  }

  # Check if DEV's Process Design has a writing_*.kdb file and delete it
  if ($Server -eq "DEV") {
    #gw1
    if (Test-Path $APPIAN_HOME\server\process\design\gw1\writing_*.kdb) {
      Write-Host "Removing writing_*.kdb from GW1" -ForegroundColor Yellow
      Remove-Item $APPIAN_HOME\server\process\design\gw1\writing_*.kdb
    }
    #gw2
    if (Test-Path $APPIAN_HOME\server\process\design\gw2\writing_*.kdb) {
      Write-Host "Removing writing_*.kdb from GW2" -ForegroundColor Yellow
      Remove-Item $APPIAN_HOME\server\process\design\gw2\writing_*.kdb
    }
  }
  Write-Host "Starting Appian"

  # Place the name of the service here to start for Appian
  Start-Service $AppianService
  Notify("StartAppian")
  if ($LB) {
    (Get-Service $MULEAPNSVC.Name -ComputerName $MULE).Start()
    Write-Host "Starting Mule's Appian" -ForegroundColor Magenta
  }

  cmd.exe "/C $APPIAN_HOME\server\_scripts\diagnostic\checkengine.bat -s >    $logdir\Startup.log"

  # These lines check the Startup log for fatals and errors at the beginning
  $fatals = Select-String FATAL $logdir\Startup.log
  $errs = Select-String ERROR $logdir\Startup.log

  # Check for errors and fatals again
  $fatals = Select-String FATAL $logdir\Startup.log
  $errs = Select-String ERROR $logdir\Startup.log

  Write-Host "Still warnings or Errors in CE" -ForegroundColor Yellow
  # Increment times
  $times = $times + 1

  # If times > threshold, email out error message
  if ($times -gt $threshold) {
    SendAlert("There is a problem with Appian - It won't start")
    Write-Host "There was a problem with Appian..it took too long to start -  emailing alert" -ForegroundColor Red
    Read-Host "Press any key to exit"
  }
}
Write-Host "Appian Started" -ForegroundColor Green
Read-Host "Press any key to return"
}

您可以在脚本开头使用简单的 Test-Connection 来做到这一点。

if ($ping = Test-Connection -ComputerName PrimaryServerName -Quiet) {
Write-Host "Host avalible"
}

else {
Write-Host "Host unavalible"
Exit
}

还有其他建议吗?

if (Test-Connection ServerName -Count 1 -Quiet) {
Write-Host "Host avalible"
}

else {
Write-Host "Host unavalible"
Exit
}

这行不通。我想让它测试服务器是否启动,如果没有,退出脚本,如果是,继续执行脚本。在 ISE 上测试它时它可以工作,但是当我启动脚本时它没有