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" } #> |