Functions/BloxOne/BloxOnePlatform/Get-B1HealthCheck.ps1

function Get-B1HealthCheck {
    <#
    .SYNOPSIS
        Performs a health check on a BloxOneDDI Host

    .DESCRIPTION
        This function is used to perform a health check on a BloxOneDDI Host

    .PARAMETER B1Host
        The BloxOneDDI Host name/fqdn

    .PARAMETER Type
        The type of health check to perform

    .EXAMPLE
        PS> Get-B1HealthCheck -B1Host "B1DDI-01" -Type "ApplicationHealth"

        B1Host : B1DDI-01
        DNS : started
        Discovery : started
        CDC : started
        AnyCast : started
        DHCP : started

    .EXAMPLE
        PS> Get-B1HealthCheck -B1Host "B1DDI" -Type "ApplicationHealth" | ft

        B1Host Discovery AnyCast DHCP CDC DNS
        ------ --------- ------- ---- --- ---
        B1DDI-01 started started started started started
        B1DDI-01 started started

    .FUNCTIONALITY
        BloxOneDDI

    .FUNCTIONALITY
        Health
    #>

    [CmdletBinding()]
    param(
      [Alias('OnPremHost')]
      [Parameter(Mandatory=$true)]
      [String]$B1Host,
      [Parameter(Mandatory=$true)]
      [ValidateSet("ApplicationHealth")]
      [String]$Type
    )

    switch ($Type) {
      "ApplicationHealth" {
        $Hosts = Get-B1Host -Name $B1Host -Detailed
        $B1HealthStatus = @()
        foreach ($B1HostObj in $Hosts) {
            $B1HostHealthStatus = @{}
            $B1AppStatus = @()
            foreach ($B1App in $B1HostObj.services) {
                $B1AppData = @{
                    "Application" = (Get-CompositeStateSpaces | Where-Object {$_.Service_Type -eq $B1App.service_type}).Application
                    "Friendly Name" = (Get-CompositeStateSpaces | Where-Object {$_.Service_Type -eq $B1App.service_type}).FriendlyName
                    "Status" = $B1App.status.status
                }
                $B1AppStatus += $B1AppData
            }
            foreach ($App in $B1AppStatus) {
              $B1HostHealthStatus += @{
                $($App.Application) = $($App.Status)
              }
            }
            $B1HostHealthStatus."B1Host" = $B1HostObj.display_name
            $B1HealthStatus += $B1HostHealthStatus
        }
        $B1HealthStatus | ConvertFrom-HashTable | Select-Object B1Host,* -EA SilentlyContinue
      }
    }
}