Private/Get-Severity.ps1

$script:SeverityNameMap = @{
    '0' = 'Not classified'
    '1' = 'Information'
    '2' = 'Warning'
    '3' = 'Average'
    '4' = 'High'
    '5' = 'Disaster'
}

$script:SeverityCodeMap = @{
    'not classified' = 0
    'notclassified'  = 0
    'information'    = 1
    'warning'        = 2
    'average'        = 3
    'high'           = 4
    'disaster'       = 5
}

function Get-SeverityName {
    <#
    .SYNOPSIS
        Internal helper - converts Zabbix severity number (0-5) to its name.
    #>

    [CmdletBinding()]
    [OutputType([string])]
    param(
        [Parameter(Mandatory)]
        [string]$SeverityCode
    )

    if ($script:SeverityNameMap.ContainsKey($SeverityCode)) {
        return $script:SeverityNameMap[$SeverityCode]
    }
    return 'Unknown'
}

function Get-SeverityCode {
    <#
    .SYNOPSIS
        Internal helper - converts severity name to its Zabbix code (0-5).
        Returns -1 for unknown names.
    #>

    [CmdletBinding()]
    [OutputType([int])]
    param(
        [Parameter(Mandatory)]
        [string]$SeverityName
    )

    $key = $SeverityName.ToLower()
    if ($script:SeverityCodeMap.ContainsKey($key)) {
        return $script:SeverityCodeMap[$key]
    }
    return -1
}