Private/_LoadSettings.ps1

function _LoadSettings {
    [CmdletBinding()]
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '', Justification = 'Used by other functions.')]

    param (
        [Parameter(Mandatory = $true)]
        [string]$File
    )
    try {
        $Script:STTSettings = (Get-Content $File) -replace ('ObjectGuid', '_ObjectGuid') | ConvertFrom-Json
    }
    catch {
        $MessageSplat = @{
            MessageText  = 'Unable to load settings.'
            MessageIcon  = 'Hand'
            ButtonType   = 'OK'
            MessageTitle = 'Error'
        }
        _ShowMessageBox @MessageSplat
    }

    if ($STTSettings.DCSettings.UseAlternateCredentials) {
        $Script:ADCredential = Import-Clixml -Path $env:APPDATA\LoganShell\Stored.xml
        Write-Verbose "Alt Username: $($ADCredential.Username)"
        $Script:SessionSplat = @{
            Credential = $ADCredential
        }
    }
    else {
        $Script:SessionSplat = @{
        }
    }

    if ($STTSettings.DCSettings.DomainController) {
        if ($STTSettings.DCSettings.UseAlternateCredentials) {
            $Script:GetObjectSplat = @{
                Server     = $STTSettings.DCSettings.DomainController
                Credential = $StoredCredential
            }
        }
        else {
            $Script:GetObjectSplat = @{
                Server = $STTSettings.DCSettings.DomainController
            }
        }
    }
    else {
        $Script:GetObjectSplat = @{
        }
    }

    if ($STTSettings.FeatureSettings.WhatsUpGold) {
        $Script:WUGCredential = Import-Clixml -Path $env:APPDATA\LoganShell\WUG.xml
        Write-Verbose "WUG Username: $($WUGCredential.Username)"
    }

    Write-Verbose ($SessionSplat | ConvertTo-Json)
    Write-Verbose ($GetObjectSplat | ConvertTo-Json)
}