Functions/BloxOne/BloxOneDDI/Get-B1DTCStatus.ps1
function Get-B1DTCStatus { <# .SYNOPSIS Retrieves a list BloxOne DTC LBDNs .DESCRIPTION This function is used to query a list BloxOne DTC LBDNs .PARAMETER LBDN The name of the DTC LBDN to get the status for .PARAMETER Raw This switch indicates whether to return raw or parsed results. The default is parsed (-Raw:$false) .PARAMETER id The id of the DTC LBDN to get the status for. Accepts pipeline input from Get-B1DTCLBDN .EXAMPLE PS> Get-B1DTCLBDN -Name 'email.domain.corp' | Get-B1DTCStatus [LBDN] email.domain.corp [Policy] Exchange [B1Host] B1-1 [Pool] HEALTHY: Exchange [Server] HEALTHY: EXCHANGE-MAIL01 [HealthCheck] HEALTHY: Exchange-HTTPS - 04/16/2024 08:25:15 [HealthCheck] HEALTHY: ICMP Health Check - 04/16/2024 08:24:45 [Server] HEALTHY: EXCHANGE-MAIL02 [HealthCheck] HEALTHY: Exchange-HTTPS - 04/16/2024 08:25:10 [HealthCheck] HEALTHY: ICMP Health Check - 04/16/2024 08:24:38 [Policy] Exchange [B1Host] B1-2 [Pool] HEALTHY: Exchange [Server] HEALTHY: EXCHANGE-MAIL01 [HealthCheck] HEALTHY: Exchange-HTTPS - 04/16/2024 08:25:08 [HealthCheck] HEALTHY: ICMP Health Check - 04/16/2024 08:25:16 [Server] HEALTHY: EXCHANGE-MAIL02 [HealthCheck] HEALTHY: Exchange-HTTPS - 04/16/2024 08:25:13 [HealthCheck] HEALTHY: ICMP Health Check - 04/16/2024 08:25:08 .FUNCTIONALITY BloxOneDDI .FUNCTIONALITY DNS #> [CmdletBinding()] param( [Parameter( ParameterSetName='None', Mandatory=$true )] [String]$LBDN, [Switch]$Raw, [Parameter( ValueFromPipelineByPropertyName = $true, ParameterSetName = 'With ID', Mandatory=$true )] [String[]]$id ) process { $Colours = @{ "HEALTHY" = "Green" "ERROR" = "Red" "NOT_CONFIGURED" = "Gray" "PRESUMED_HEALTHY" = "DarkYellow" "PENDING" = "Gray" "UNHEALTHY" = "Yellow" "WARNING" = "Yellow" } if ($LBDN) { $LBDNItem = Get-B1DTCLBDN -Name $LBDN -Strict if (!($LBDNItem)) { Write-Error "Could not find LBDN with name: $($LBDN)" return $null } else { $LBDNID = $LBDNItem.id } } if ($id) { if (($id.split('/')[1]) -ne "lbdn") { Write-Error "Error. Unsupported pipeline object. Input is only supported from Get-B1DTCLBDN" return $null } $LBDNID = $id } $Results = Invoke-CSP -Method GET -Uri "$(Get-B1CSPUrl)/api/ddi/v1/$($LBDNID)/report" if ($Results) { if ($Raw) { return $Results } else { if (!($LBDNItem)) { $LBDNItem = Get-B1DTCLBDN -id $LBDNID } $B1Hosts = @() foreach ($OPHID in $Results.ophids) { $B1Hosts += Get-B1Host -OPHID $OPHID } # $Report = [PSCustomObject]@{ # "LBDN" = $LBDNItem.name # "Policy" = $PolicyItem.name # "B1 Hosts" = $B1Hosts.display_name # } Write-Host "[LBDN] $($LBDNItem.name)" -ForegroundColor DarkYellow $B1HostCount = 0 foreach ($PolicyReportItem in $($Results.reports.PSObject.Properties.Value)) { Write-Colour " [Policy] ","$($PolicyReportItem.display_name)" -Colour DarkMagenta,Gray foreach ($HostReportItem in $($PolicyReportItem.reports.PSObject.Properties.Value)) { $B1HostName = ($B1Hosts | Where-Object {$_.ophid -eq $($Results.reports.PSObject.Properties.Name)[$B1HostCount]}).display_name Write-Colour " [B1Host] ","$($B1HostName)" -Colour DarkGreen,Gray Write-Colour " [Pool] ","$($HostReportItem.status): ","$($HostReportItem.display_name)" -Colour Cyan,$($Colours[$HostReportItem.status]),'Gray' foreach ($ServerReportItem in $($HostReportItem.reports.PSObject.Properties.Value)) { Write-Colour " [Server] ","$($ServerReportItem.status): ","$($ServerReportItem.display_name)" -Colour DarkCyan,$($Colours[$ServerReportItem.status]),'Gray' foreach ($HealthCheckReportItem in $($ServerReportItem.reports.PSObject.Properties.Value)) { Write-Colour " [HealthCheck] ","$($HealthCheckReportItem.status): ","$($HealthCheckReportItem.display_name)"," - $($HealthCheckReportItem.last_reported)" -Colour DarkBlue,$($Colours[$HealthCheckReportItem.status]),'Gray','Gray' } } } $B1HostCount += 1 } # return $Report } } } } |