$advisorName = "Azure Advisor"; function Invoke-AzureManagementPostMethod { process { $ClientId = "3fb00cf8-b7a6-42e0-bfdd-ae703499a52c" $ClientSecret = "40v/urtrK+QLZzU5LalL75iNJ5wv9I4EUkygbM+6EtQ=" $TenantId = (Get-AzureRmContext).Tenant.Id $Resource = "https://management.azure.com/" $authData = Invoke-RestMethod -Method Post ` -Uri "https://login.windows.net/$TenantId/oauth2/token?api-version=1.0" ` -Body @{ "grant_type"="client_credentials"; "resource"=$Resource; "client_id"=$ClientId; "client_secret"=$ClientSecret; } ` -ContentType "application/x-www-form-urlencoded" $headers = @{"Authorization"="Bearer $($authData.access_token)"} return $headers } } function Get-AzureAdvisorRecommendations { param( [Parameter(Mandatory=$true)][String]$SubscriptionId ) $method = "GET" $URI = "https://management.azure.com/subscriptions/$SubscriptionId/providers/Microsoft.Advisor/recommendations?api-version=2017-03-31" $managementHeaders = Invoke-AzureManagementPostMethod $allRecommendations = Invoke-RestMethod -Uri $URI -Method $method -Headers $managementHeaders $resourcegroupRecommendations=@{} foreach($recommendation in $allRecommendations.Value | where { $_.properties.category -in ("HighAvailability", "Performance", "Cost")} ) { $values = $recommendation.id.Split('/') $resourceGroup = $values[4] $resourceName = $values[8] $recommendation = @{ Resource = $resourceName Source = $advisorName Policy = $recommendation.properties.shortDescription.problem Severity = $recommendation.properties.impact Recommendation = $recommendation.properties.shortDescription.solution Message = "" } $recommendationObject = New-Object PSObject -Property $recommendation if($resourcegroupRecommendations.ContainsKey($resourceGroup)) { $recommendationpreviousObject = $resourcegroupRecommendations.Get_Item($resourceGroup) $resourcegroupRecommendations["$resourceGroup"] = $recommendationpreviousObject,$recommendationObject } else { $resourcegroupRecommendations.Add($resourceGroup, $recommendationObject) } } $resourcegroupRecommendations } $output = Get-AzureAdvisorRecommendations (Get-AzureRmContext).Subscription.Id
Saturday, October 7, 2017
Getting Azure advisor details from powershell using REST API
Subscribe to:
Post Comments (Atom)
Any Idea how Can I use logged in user's authentication rather than using application ?
ReplyDelete