public/Disconnect-Unraid.ps1

function Disconnect-Unraid {
    <#
    .SYNOPSIS
        Disconnects from an Unraid server.

    .PARAMETER Session
        Specific session to disconnect. Defaults to the current session.

    .EXAMPLE
        Disconnect-Unraid

    .EXAMPLE
        Disconnect-Unraid -Session $mySession
    #>

    [CmdletBinding()]
    [OutputType('void')]
    param(
        [Parameter()]
        [UnraidSession]$Session
    )

    process {
        if ($Session) {
            if ($script:DefaultUnraidSession -and $script:DefaultUnraidSession.Server -eq $Session.Server -and 
                $script:DefaultUnraidSession.ConnectedAt -eq $Session.ConnectedAt) {
                $serverName = $script:DefaultUnraidSession.Server
                Write-Verbose "Clearing default session for $serverName (matches provided session)"
                $script:DefaultUnraidSession = $null
                Write-Information "Disconnected from Unraid session: $serverName" -InformationAction Continue
            }
            else {
                Write-Verbose "Provided session does not match default session; default session unchanged"
                Write-Warning "Provided session is not the default session. No action taken."
            }
        }
        else {
            if ($script:DefaultUnraidSession) {
                $serverName = $script:DefaultUnraidSession.Server
                Write-Verbose "Clearing default session for $serverName"
                $script:DefaultUnraidSession = $null
                Write-Information "Disconnected from default Unraid session: $serverName" -InformationAction Continue
            }
            else { Write-Warning "No active default session to disconnect."  }
        }
    }
}