scripts/Run-ScanBridge.ps1
|
[CmdletBinding()] param( [Parameter(Mandatory)][string]$ConfigurationPath, [switch]$IntakeOnly, [switch]$SkipAlerts ) $ErrorActionPreference = 'Stop' $workerFailed = $false $alertFailed = $false $workerHeld = $false try { Import-Module NSP.ScanBridge -ErrorAction Stop $workerResults = @(Invoke-NSPScanBridge -ConfigurationPath $ConfigurationPath -IntakeOnly:$IntakeOnly -ErrorAction Stop) $workerResults $workerHeld = @($workerResults | Where-Object { $_.State -in @('ManualReviewRequired','PendingReviewOrRetry') }).Count -gt 0 } catch { $workerFailed = $true Write-Warning 'ScanBridge worker failed. Details are available only in restricted local diagnostics.' } if (-not $SkipAlerts -and -not $IntakeOnly) { try { $configuration = Import-PowerShellDataFile -LiteralPath $ConfigurationPath -ErrorAction Stop if ($configuration.Alerts -and $configuration.Alerts.Enabled) { Send-NSPScanBridgeAlert -ConfigurationPath $ConfigurationPath -WorkerFailed:$workerFailed -WorkerSucceeded:(-not $workerFailed) -ErrorAction Stop } } catch { $alertFailed = $true Write-Warning 'ScanBridge alert submission failed. Check the restricted local configuration and logs.' } } if ($alertFailed) { exit 3 } if ($workerFailed -or $workerHeld) { exit 2 } exit 0 |