Functions/Get-AHContextToken.ps1

Function Get-AHContextToken {
    [CmdletBinding()]


    $context = Get-AzContext 
    $latest = $context.TokenCache.ReadItems() | Sort-Object -Descending -Property ExpiresOn | Select-Object -first 1 
    $AccessToken = $latest.AccessToken
    if ($latest.ExpiresOn -gt (get-date)) { 
     
    } 
    else { 
        Write-Warning "This token expires on $($latest.expiresOn). To get a new token run 'Clear-AzContext -Force' then 'Connect-AzAccount' again."
        # Clear-AzContext -Force
        # $CTX = Connect-AzAccount -Tenant $Tenant -Subscription $Subscription
        # $AccessToken = $CTX.Context.TokenCache.ReadItems().AccessToken
    } 
    $AccessToken

}

<#
$AccessToken = Get-AHContextToken
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $AccessToken")
$headers.Add("Content-Type", "application/json")
$sub = (Get-AzContext).Subscription.Id
$PostURI = "https://management.azure.com/subscriptions/$sub/providers/Microsoft.Compute/virtualMachines?api-version=2020-06-01"
Invoke-RestMethod -Method Get -Headers $headers -Uri $PostURI
 
 
$PostURI = "https://management.azure.com/subscriptions/$((Get-AzContext).Subscription.Id)/providers/Microsoft.Compute/virtualMachines?api-version=2020-06-01"
$Body = @{
    OutVariable = 'Status'
    Method = 'POST'
    UseBasicParsing = $true
    Headers = @{
        Authorization = "Bearer $($AccessToken)"
        'Content-Type' = 'application/json'
    }
}
Invoke-WebRequest -uri $PostURI @Body
  
$Body.Method = 'Get'
$status[0].RawContent -split "\n" | Where-Object { $_ -match "(^Location: )(?<GetURL>https://.+)" }
 
while ($Status[0].StatusCode -eq 202) {
    Start-Sleep -Seconds $SleepSeconds
    Invoke-WebRequest -uri $Matches.GetURL @Body | Select-Object StatusCode, StatusDescription, Headers
    Write-Verbose -Message "Checking Policy in $SleepSeconds seconds"
}
#>