Public/Disconnect-ZbxServer.ps1

function Disconnect-ZbxServer {
    <#
    .SYNOPSIS
        Disconnects from the current Zabbix server session.
    .DESCRIPTION
        Clears the locally cached connection information (URL and token).
        Token-based authentication doesn't require any server-side logout
        call - this cmdlet only scrubs the in-memory session state.
    .EXAMPLE
        Disconnect-ZbxServer

        Disconnects from the current Zabbix server session.
    .EXAMPLE
        Connect-ZbxServer -Url $url -Token $token
        Get-ZbxProblem -Severity disaster -Last 5
        Disconnect-ZbxServer

        Connects, retrieves problems, then disconnects cleanly.
    .OUTPUTS
        PSCustomObject with properties Disconnected, Url and Message.
    #>

    [CmdletBinding()]
    param()

    if (-not $script:ZabbixConnection.Connected) {
        Write-Warning "No active Zabbix session found."
        return [PSCustomObject]@{
            Disconnected = $false
            Message      = "No active session to disconnect"
        }
    }

    $previousUrl = $script:ZabbixConnection.Url

    # Clear session data
    $script:ZabbixConnection.Token     = $null
    $script:ZabbixConnection.Url       = $null
    $script:ZabbixConnection.Connected = $false

    return [PSCustomObject]@{
        Disconnected = $true
        Url          = $previousUrl
        Message      = "Successfully disconnected from Zabbix server"
    }
}