# For your environment $clientid = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" $clientsecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" $subscriptionid = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" $tenantid = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" # Menu $menu = @( @("Subscriptions - List", "https://management.azure.com/subscriptions?api-version=2016-06-01"), @("Tenants - List", "https://management.azure.com/tenants?api-version=2022-12-01"), @("Resources - List", "https://management.azure.com/subscriptions/{subscriptionId}/resources?api-version=2021-04-01"), @("Resource Groups - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups?api-version=2021-04-01"), @("Virtual Machines - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines?api-version=2024-07-01"), @("Disks - List", "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/disks?api-version=2024-03-02"), @("Virtual Networks - List", "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/disks?api-version=2024-03-02"), @("Network Interfaces - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces?api-version=2024-01-01"), @("Public IP Addresses - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses?api-version=2024-03-01"), @("Network Security Groups - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups?api-version=2024-03-01"), @("Network Interface Load Balancers - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/loadBalancers?api-version=2024-03-01"), @("Storage Accounts - List", "https://management.azure.com/subscriptions/{subscriptionid}/providers/Microsoft.Storage/storageAccounts?api-version=2023-05-01"), @("Blob Services - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices?api-version=2023-05-01"), @("Blob Containers - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers?api-version=2023-05-01"), @("File Services - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/fileServices?api-version=2023-05-01"), @("File Shares - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/fileServices/default/shares?api-version=2023-05-01"), @("Queue - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/queueServices/default/queues?api-version=2023-05-01"), @("Table Services - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/tableServices?api-version=2023-05-01"), @("Storage Task Assignments - List", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/storageTaskAssignments?api-version=2023-05-01"), @("Vaults - List By Resource Group", "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults?api-version=2022-07-01"), @("Virtual Machine Size - List", "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/vmSizes?api-version=2024-07-01"), @("Resource Skus - List", "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/skus?api-version=2021-07-01&$filter=location eq 'westus'"), @("Custom Request URI (GET request only)","Enter custom uri") ) $i = 0 foreach ($item in $menu) { $menuitem = [string]($i+1) + ") " + $item[0] Write-Host $menuitem $i++ } $outfile = "" $selecteditem = Read-Host "Enter no." $requesturi = $menu[($selecteditem - 1)][1] if ($requesturi -eq "Enter custom uri") { $requesturi = Read-Host "Enter your GET request uri (you can use keyword {subscriptionid}, {resourceGroupName}, {location} and {vmName})" if ($requesturi.Substring(0,4) -eq "GET ") { $requesturi = $requesturi | % Replace "GET " "" } } $resourcegroup = "{resourceGroupName}" if ($requesturi.ToLower().Contains($resourcegroup.ToLower())) { $resourcegroup = Read-Host "Enter resourceGroupName" $requesturi = $requesturi | % Replace "{resourceGroupName}" $resourcegroup $requesturi = $requesturi | % Replace "{ResourceGroupName}" $resourcegroup $requesturi = $requesturi | % Replace "{resourcegroupname}" $resourcegroup } $location = "{location}" if ($requesturi.ToLower().Contains($location.ToLower())) { $location = Read-Host "Enter location" $requesturi = $requesturi | % Replace "{location}" $location $requesturi = $requesturi | % Replace "{Location}" $location } $vmname = "{vmName}" if ($requesturi.ToLower().Contains($vmname.ToLower())) { $vmname = Read-Host "Enter vmName" $requesturi = $requesturi | % Replace "{vmName}" $vmname $requesturi = $requesturi | % Replace "{vmname}" $vmname } $storageaccountname = "{accountName}" if ($requesturi.ToLower().Contains($storageaccountname.ToLower())) { $storageaccountname = Read-Host "Enter Storage account name" $requesturi = $requesturi | % Replace "{accountName}" $storageaccountname $requesturi = $requesturi | % Replace "{accountname}" $storageaccountname } $nicname = "{networkInterfaceName}" if ($requesturi.ToLower().Contains($nicname.ToLower())) { $nicname = Read-Host "Enter Network interface name" $requesturi = $requesturi | % Replace "{networkInterfaceName}" $nicname $requesturi = $requesturi | % Replace "{networkinterfacename}" $nicname } $outfile = Read-Host "Enter ourput to json file(Path)" # Get accesstoken $resource = "https://management.azure.com/" $tokenendpoint = "https://login.microsoftonline.com/$tenantid/oauth2/token" $body = @{ grant_type = "client_credentials" resource = $resource client_id = $clientid client_secret = $clientsecret } $tokenresponse = Invoke-RestMethod -Method Post -Uri $tokenendpoint -Body $body -ContentType "application/x-www-form-urlencoded" $accesstoken = $tokenresponse.access_token $headers = @{ 'Authorization' = "Bearer $accesstoken" 'Content-Type' = 'application/json' } # Send Request and Get Response #for PowerShell Core #$requesturi = $requesturi | % Replace "{subscriptionid}" $subscriptionid 1 #for Windows PowerShell $requesturi = $requesturi | % Replace "{subscriptionid}" $subscriptionid $requesturi = $requesturi | % Replace "{subscriptionId}" $subscriptionid $ret = (Invoke-RestMethod -Uri $requesturi -Headers $headers -Method Get) if ($outfile -ne "") { $ret | ConvertTo-Json -Depth 10 |Set-Content $outfile } Write-Output $ret