Disconnect-SPOCSOM.ps1

##############################
#.SYNOPSIS
#Disposes/disconnects a context.
#
#.DESCRIPTION
#Disposes the supplied context. If no context is supplied, disposes the global variable context.
#
#.PARAMETER contexts
#The contexts to disconnect.
#
#.EXAMPLE
#Disconnect-SPOCSOM -contexts $context
#
#.NOTES
#Check if it does disconnect the global context if not context is supplied.
##############################
Function Disconnect-SPOCSOM{
    [CmdletBinding()]
    Param(
        [Parameter()]
        [Microsoft.SharePoint.Client.ClientRuntimeContext[]]$contexts
    )
    if($contexts){
        foreach($ctx in $contexts){
            $ctx.Dispose()
            #$ctx | Remove-Variable
        }
    }
    else{
        if($Global:SPOCSOMContext){
            $Global:SPOCSOMContext.Dispose()
            Remove-Variable -Scope Global -Name SPOCSOMContext
        }
        if($Global:SPCSOMContext){
            $Global:SPCSOMContext.Dispose()
            Remove-Variable -Scope Global -Name SPCSOMContext
        }

    }
}