Public/Set-WS1SessionToken.ps1

<#
.SYNOPSIS
Set global hash WS1SessionToken + Set the default -Token & -Tenant Parameters Value for other cmdlets.
 
.PARAMETER Token
Mandatory: Token[PSCustomObject] including all params (access_token, Tenant, access_token, expires_in, refresh_token).
 
.EXAMPLE
Set-WS1SessionToken -Token $Token
#>

function Set-WS1SessionToken {
    [cmdletbinding()]
    param(
       [Parameter(Mandatory=$true)][PSCustomObject]$Token
    )
    $Script:WS1SessionToken.access_token = "$($Token.access_token)"
    $Script:WS1SessionToken.expires_in = $Token.expires_in
    $Script:WS1SessionToken.refresh_token = $Token.refresh_token
    $Script:WS1SessionToken.Tenant = $Token.Tenant
    Write-Verbose $Script:WS1SessionToken

    (Get-Command -Module WS1AccessAdminAPI -ParameterName Token).ForEach({
        $Global:PSDefaultParameterValues.Remove(
            "$($_.Name):Token"
        )
        $Global:PSDefaultParameterValues.Add(
            "$($_.Name):Token", "$($Script:WS1SessionToken.access_token)"
        )
    })

    (Get-Command -Module WS1AccessAdminAPI -ParameterName Tenant).ForEach({
        $Global:PSDefaultParameterValues.Remove(
            "$($_.Name):Tenant"
        )
        $Global:PSDefaultParameterValues.Add(
            "$($_.Name):Tenant", "$($Script:WS1SessionToken.Tenant)"
        )
    })

    Return $Script:WS1SessionToken, $Global:PSDefaultParameterValues
}