public/Disconnect-MyCorp.ps1

<#
.SYNOPSIS
    Disconnects from Microsoft Graph, Azure, Exchange Online, and Teams sessions used by MyCorp.
 
.DESCRIPTION
    Helper cmdlet used to cleanly sign out from cloud service sessions opened by Connect-MyCorp.
    This is the MyCorp equivalent of running:
        Disconnect-MgGraph
        Disconnect-AzAccount
        Disconnect-ExchangeOnline
        Disconnect-MicrosoftTeams
 
.EXAMPLE
    Disconnect-MyCorp
 
.EXAMPLE
    Disconnect-MtMyCorp
 
.EXAMPLE
    Disconnect-MyCorpGraph
#>


function Disconnect-MyCorp {
    [Alias("Disconnect-MtMyCorp", "Disconnect-MyCorpGraph")]
    [CmdletBinding()]
    param()

    #
    # Microsoft Graph
    #
    if ($__MyCorpSession.Connections -contains "Graph" -or $__MyCorpSession.Connections -contains "All") {
        Write-Verbose -Message "Disconnecting from Microsoft Graph."
        try {
            Disconnect-MgGraph -ErrorAction Stop
        } catch {
            Write-Verbose "Graph disconnection failed or no active session."
        }
    }

    #
    # Microsoft Azure
    #
    if ($__MyCorpSession.Connections -contains "Azure" -or $__MyCorpSession.Connections -contains "All") {
        Write-Verbose -Message "Disconnecting from Microsoft Azure."
        try {
            Disconnect-AzAccount -ErrorAction Stop
        } catch {
            Write-Verbose "Azure disconnection failed or no active session."
        }
    }

    #
    # Exchange Online / Security & Compliance
    #
    if (
        $__MyCorpSession.Connections -contains "ExchangeOnline" -or
        $__MyCorpSession.Connections -contains "SecurityCompliance" -or
        $__MyCorpSession.Connections -contains "All"
    ) {
        Write-Verbose -Message "Disconnecting from Microsoft Exchange Online."
        try {
            Disconnect-ExchangeOnline -Confirm:$false -ErrorAction Stop
        } catch {
            Write-Verbose "Exchange Online disconnection failed or no active session."
        }
    }

    #
    # Microsoft Teams
    #
    if ($__MyCorpSession.Connections -contains "Teams" -or $__MyCorpSession.Connections -contains "All") {
        Write-Verbose -Message "Disconnecting from Microsoft Teams."
        try {
            Disconnect-MicrosoftTeams -ErrorAction Stop
        } catch {
            Write-Verbose "Teams disconnection failed or no active session."
        }
    }

}