scripts/Test-ScanBridgeHealth.ps1

[CmdletBinding()]
param(
    [Parameter(Mandatory)][string]$ConfigurationPath,
    [ValidateRange(1,100000)][int]$MaximumPending = 25,
    [ValidateRange(1,10080)][int]$MaximumPendingMinutes = 10
)
$ErrorActionPreference = 'Stop'
try {
    Import-Module NSP.ScanBridge -ErrorAction Stop
    $results = @(Test-NSPScanBridgeHealth -ConfigurationPath $ConfigurationPath -MaximumPending $MaximumPending -MaximumPendingMinutes $MaximumPendingMinutes)
    if ($results.Count -eq 0) { throw 'No scan routes reported.' }
    foreach ($item in $results) {
        $condition = if ($item.Healthy) { 'OK' } else { ($item.Conditions -join ',') }
        Write-Output ('Route={0}; Status={1}; Pending={2}; OldestMinutes={3}' -f $item.Route,$condition,$item.PendingCount,$item.OldestPendingMinutes)
    }
    if (@($results | Where-Object { -not $_.Healthy }).Count -gt 0) { exit 2 }
    exit 0
} catch {
    Write-Error 'ScanBridge health evaluation failed; inspect restricted local logs.' -ErrorAction Continue
    exit 3
}