Private/Orchestration/Invoke-GracefulCleanup.ps1
|
function Invoke-GracefulCleanup { <# .SYNOPSIS Performs cleanup of all service connections and restores preference variables. .DESCRIPTION Disconnects from Exchange Online, SharePoint Online, Azure, and Microsoft Graph services while suppressing output and restoring PowerShell preference variables to their original state. .PARAMETER QuietMode Suppresses status output during cleanup operations. .OUTPUTS None. Performs side effects of disconnecting services. .EXAMPLE Invoke-GracefulCleanup -QuietMode:$false #> param([switch]$QuietMode) # Store original preference variables $prevWarn = $WarningPreference $prevInfo = $InformationPreference $prevProg = $ProgressPreference $prevVerb = $VerbosePreference $prevDbg = $DebugPreference # Suppress all output during cleanup $WarningPreference = 'SilentlyContinue' $InformationPreference = 'SilentlyContinue' $ProgressPreference = 'SilentlyContinue' $VerbosePreference = 'SilentlyContinue' $DebugPreference = 'SilentlyContinue' try { # Disconnect Exchange Online try { if (Get-Module ExchangeOnlineManagement -ListAvailable) { Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue | Out-Null } } catch { # Silent failure } # Disconnect SharePoint Online try { if (Get-Command Disconnect-SPOService -ErrorAction SilentlyContinue) { Disconnect-SPOService -ErrorAction SilentlyContinue | Out-Null } } catch { # Silent failure } # Disconnect Azure try { if (Get-Module Az.Accounts -ErrorAction SilentlyContinue) { Disconnect-AzAccount -Scope Process -ErrorAction SilentlyContinue | Out-Null } } catch { # Silent failure } # Disconnect Microsoft Graph try { if ($graphConnected) { Disconnect-MgGraph -ErrorAction SilentlyContinue | Out-Null } } catch { # Silent failure } } finally { # Restore original preference variables $WarningPreference = $prevWarn $InformationPreference = $prevInfo $ProgressPreference = $prevProg $VerbosePreference = $prevVerb $DebugPreference = $prevDbg } if (-not $QuietMode) { Write-Host '[Cleanup] All service connections closed' -ForegroundColor DarkGray } } |