Private/ConvertTo-CwSeverity.ps1
|
function ConvertTo-CwSeverity { <# .SYNOPSIS Maps a remaining-lifetime value (days or hours) onto a Nagios-style severity. .DESCRIPTION Core analyzer rule of cert-watchtower. Values at or below the critical threshold (or already negative, i.e. expired/stale) map to CRITICAL, values at or below the warning threshold map to WARNING, everything else is OK. With -AsExitCode the severity string is converted to the standardized process exit code (OK=0, WARNING=1, CRITICAL=2, UNKNOWN=3). #> [CmdletBinding(DefaultParameterSetName = 'Days')] [OutputType([string], [int])] param( [Parameter(Mandatory, ParameterSetName = 'Days')] [double]$DaysRemaining, [Parameter(ParameterSetName = 'Days')] [double]$WarnDays = 30, [Parameter(ParameterSetName = 'Days')] [double]$CritDays = 7, [Parameter(Mandatory, ParameterSetName = 'Hours')] [double]$HoursRemaining, [Parameter(ParameterSetName = 'Hours')] [double]$WarnHours = 24, [Parameter(ParameterSetName = 'Hours')] [double]$CritHours = 0, [Parameter(Mandatory, ParameterSetName = 'Severity')] [ValidateSet('OK', 'WARNING', 'CRITICAL', 'UNKNOWN')] [string]$Severity, [switch]$AsExitCode ) $resolved = switch ($PSCmdlet.ParameterSetName) { 'Days' { if ($DaysRemaining -le $CritDays) { 'CRITICAL' } elseif ($DaysRemaining -le $WarnDays) { 'WARNING' } else { 'OK' } } 'Hours' { if ($HoursRemaining -le $CritHours) { 'CRITICAL' } elseif ($HoursRemaining -le $WarnHours) { 'WARNING' } else { 'OK' } } 'Severity' { $Severity } } if ($AsExitCode) { switch ($resolved) { 'OK' { 0 } 'WARNING' { 1 } 'CRITICAL' { 2 } default { 3 } } } else { $resolved } } |