Public/Set-WS1SessionToken.ps1
<#
.SYNOPSIS Set global hash WS1SessionToken + Set the default -Token & -Tenant Parameters Value for other cmdlets. Mnipulate the $Global:PSDefaultParameterValues module attribute. .PARAMETER Token Mandatory: Token[PSCustomObject] including all params (access_token, Tenant, access_token, expires_in, refresh_token). .EXAMPLE Set-WS1SessionToken -Token $Token .EXAMPLE $Token = @{ scope = "admin" access_token = "abcxxxxKXaIqc.eHaiOje2xzilmeHaiOje2xzilmeHaiOje2xzilmeHaiOje2xzilmeHaiOje2xzilm..." token_type = "Bearer" expires_in = 10799 refresh_token = "xYzOjnUxxxKXaIqc.eHaiOje2xzilm..." Tenant = "example.vmware.com" } Set-WS1SessionToken -Token $Token .EXAMPLE $Params = @{ Tenant = 'tenant01.example.com' ClientID = 'Example01' ClientSecret = 'qwerty' } $Token = Get-WS1AccessToken @Params Set-WS1SessionToken -Token $Token .EXAMPLE $Params = @{ Tenant = 'tenant01.example.com' LocalAdminUSR = 'Admin' LocalAdminPWD = 'qwerty' } $Token = Get-WS1LoginSessionToken @Params Set-WS1SessionToken -Token $Token #> function Set-WS1SessionToken { [cmdletbinding()] param( [Parameter(Mandatory=$true)][PSCustomObject]$Token ) $TestAccToken = Test-WS1AccessToken -Tenant $Token.Tenant -Token $Token.access_token -ErrorAction SilentlyContinue If(-Not ($TestAccToken.Status)){ Return New-Object psobject -Property @{ "Status" = $False; "Message" = $Error[0].Exception.Message } } $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)" ) }) Write-Verbose "$($Global:PSDefaultParameterValues)" Return New-Object psobject -Property @{ "Status" = $true; "Data" = "$($Global:PSDefaultParameterValues | Format-List | Out-String))" } } |