install/scripts/azCCOCheckAzureApiLastVersion.ps1 (39 lines of code) (raw):

az login az account show | Out-GridView -PassThru #Resource Types $ref = @('^recommendations$', '^tasks$', '^alerts$', '^managedClusters$', '^virtualMachines$', '^virtualNetworks$', '^networkInterfaces$', '^networkInterfaces$', '^resourceGroups$', '^subscriptions$', '^roleAssignments$', '^roleDefinitions$', '^networkSecurityGroups$') $refRegex = [string]::Join('|', $ref) #Resource Providers $ref2 = @('Microsoft.Resources', 'Microsoft.Network', 'Microsoft.Advisor', 'Microsoft.Compute', 'Microsoft.ContainerService', 'Microsoft.Security', 'Microsoft.Authorization') #Resource Types (location only for resources) $ref3 = @('^resourceGroups$', '^subscriptions$', '^locations$') $ref3Regex = [string]::Join('|', $ref3) $providers = (az provider list | ConvertFrom-Json) $providers | % { if ($ref2 -contains $_.namespace) { "******************************************************************" "### Provider: " + $_.namespace $resourcetypes = (az provider show --namespace $_.namespace | ConvertFrom-Json).ResourceTypes #"### Resource Types: " + ((Get-AzureRmResourceProvider -ProviderNamespace $_.namespace).ResourceTypes).count "" #We only want to show location resource API version if the provider is Microsoft.Resources if ($_.namespace -eq 'Microsoft.Resources') { $resourcetypes | % { If ($_.resourceType -match $ref3Regex) { "- Resource Type Name: " + $_.resourceType "- API last version: " + ($_.apiVersions | Select-Object -First 1) "" } } } else { $resourcetypes | % { If ($_.resourceType -match $refRegex) { "- Resource Type Name: " + $_.resourceType "- API last version: " + ($_.apiVersions | Select-Object -First 1) "" } } } } }