Private/ConvertFrom-AzAccessToken.ps1
function ConvertFrom-AzAccessToken { [CmdletBinding()] [OutputType([string])] param ( [Parameter(Mandatory = $true)] $Token ) try { # Handle string tokens (older Az.Accounts versions) if ($Token -is [string]) { return $Token } # Handle SecureString tokens (newer Az.Accounts versions) elseif ($Token.GetType().Name -eq 'SecureString') { $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Token) try { return [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr) } finally { [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ptr) } } # Fallback for other token types else { return $Token.ToString() } } catch { Write-Warning "Failed to convert access token: $($_.Exception.Message)" return $null } <# .SYNOPSIS Converts Azure access tokens from different Az.Accounts module versions to a string. .DESCRIPTION The ConvertFrom-AzAccessToken function safely converts access tokens returned by Get-AzAccessToken from both older versions (string tokens) and newer versions (SecureString tokens) of the Az.Accounts module. This ensures backwards compatibility across different module versions. .PARAMETER Token The token object returned by Get-AzAccessToken. Can be a string (older versions) or SecureString (newer versions). .EXAMPLE $token = Get-AzAccessToken -ResourceTypeName 'MSGraph' $tokenString = ConvertFrom-AzAccessToken -Token $token.Token .EXAMPLE $token = Get-AzAccessToken -ResourceUrl 'https://graph.microsoft.com' $tokenString = ConvertFrom-AzAccessToken -Token $token.Token .NOTES Author: Rogier Dijkman This function provides backwards compatibility for the Az.Accounts module token format changes. Properly handles memory cleanup for SecureString tokens to prevent memory leaks. #> } |