To export Advisor recommendations in Azure, query the advisorresources table in Azure Resource Graph for recommendations whose status is New or InProgress, and save each with its category, impact and saving. Advisor can take up to 24 hours to assess a new resource, and up to a day to notice that you acted on a recommendation.
| Method | Best fit |
|---|---|
| PowerShell | A CSV of active recommendations across your enabled subscriptions, with savings. |
| Admin centre | A quick CSV or PDF of what Advisor shows, filtered as you choose. |
| Altivane | Recommended for monthly reviews, high impact first, with counts by category in the same workbook. |
Before you start
Use an account that is Owner, Contributor or Reader of the subscriptions, resource groups or resources you want to see: any of them can read Advisor recommendations. Microsoft lists no separate licence for it. Advisor also carries recommendations from Microsoft Defender for Cloud, so security rows can appear beside cost and reliability ones.
Know what the status means. Microsoft names properties. as the field to trust, with the values New, InProgress, Completed, Postponed and Dismissed, and warns that a completed security recommendation in Resource Graph may not match its status in Defender for Cloud. The examples read and export; they don't postpone, dismiss or act on anything. The script's finally block disconnects the account and clears its saved Azure contexts.
Option 1
Export Advisor recommendations with PowerShell
Install the modules once. The script queries Resource Graph across the enabled subscriptions, follows every page of results, and saves 1 row for each active recommendation.
Install-Module -Name Az.Accounts, Az.ResourceGraph -Repository PSGallery -Scope CurrentUser$ErrorActionPreference = 'Stop'
Connect-AzAccount -ErrorAction Stop
try {
$subscriptionIds = @(
Get-AzSubscription | Where-Object State -eq 'Enabled' | Select-Object -ExpandProperty Id
)
if ($subscriptionIds.Count -eq 0) {
Write-Output 'No enabled subscriptions are available to this account.'
return
}
$query = @(
'advisorresources'
'| where type =~ "microsoft.advisor/recommendations"'
'| where tostring(properties.recommendationStatus) in ("New", "InProgress")'
'| project id, subscriptionId, resourceGroup,'
'category = tostring(properties.category), impact = tostring(properties.impact),'
'problem = tostring(properties.shortDescription.problem),'
'solution = tostring(properties.shortDescription.solution),'
'impacted = tostring(properties.impactedValue),'
'monthlySaving = todouble(properties.extendedProperties.savingsAmount),'
'currency = tostring(properties.extendedProperties.savingsCurrency),'
'lastUpdated = todatetime(properties.lastUpdated),'
'resourceId = tostring(properties.resourceMetadata.resourceId)'
'| order by id asc'
) -join ' '
$rows = [System.Collections.Generic.List[object]]::new()
$skipToken = $null
do {
$arguments = @{ Query = $query; Subscription = $subscriptionIds; First = 1000 }
if ($skipToken) { $arguments.SkipToken = $skipToken }
$page = Search-AzGraph @arguments
foreach ($record in $page.Data) { $rows.Add($record) }
$skipToken = $page.SkipToken
} while ($skipToken)
if ($rows.Count -eq 0) {
Write-Output 'No active Advisor recommendations were found.'
} else {
$rows | Select-Object category, impact, problem, solution, impacted, resourceGroup,
subscriptionId, monthlySaving, currency, lastUpdated, resourceId |
Export-Csv -Path './advisor-recommendations.csv' -NoTypeInformation -Encoding utf8
Write-Output "$($rows.Count) recommendations saved to advisor-recommendations.csv."
}
} finally {
Disconnect-AzAccount | Out-Null
}The CSV holds the category, impact, problem and solution, the resource it is about, its resource group and subscription, the monthly saving and currency where Advisor gives one, when it last changed and the resource ID. To keep 1 category, add '| where tostring(properties. before the project line. Resource Graph paging needs id in the results, so keep it if you edit the query.
Option 2
Download recommendations from Advisor in the Azure portal
- Sign in to the Azure portal with an account that can read the subscriptions.
- Search for Advisor and open it. The Overview page opens.
- Set Subscription to All or the ones you want, and keep Recommendation Status on Active.
- Choose Download as CSV for every category, or open a category, such as Cost, and download from there for that category alone.
The download follows the filters you set, so check them before you download. It suits a quick file for 1 review; for a list in the same shape every month, use PowerShell or Altivane.
Option 3 ยท Recommended for monthly reviews
Export Advisor recommendations with Altivane
- Open Altivane and choose the tenant.
- Run the Azure Advisor Recommendations report.
- Open the Excel workbook and find Azure Advisor recommendations: each active recommendation, high impact first, with the problem, the solution, the resource and the monthly saving.
- Read Recommendations by category for how many each category has at high, medium and low impact.
Altivane counts a recommendation as active unless it is completed, postponed or dismissed, across every subscription where you gave it the Reader role. Each of Advisor's 5 categories has a row in the counts, so a category with nothing to do says 0 rather than going missing. The Azure Advisor scorecard report puts the high impact recommendations in the tenant's Word report, and the Monthly Azure Review sample workflow exports them to an Excel workbook of their own.
Contact usCommon questions
I acted on a recommendation. Why is it still listed?
Advisor can take up to a day to recognise the action. Check again the next day before marking it completed manually.
Why are some recommendations missing from the download?
The portal's download follows the filters you set, and its default status is Active, so postponed and dismissed recommendations are left out. Subscriptions excluded in Advisor's configuration don't get recommendations at all.
Where can I see what each service costs?
Advisor shows possible savings, not what you spend. See how to export cost by service and resource group in Azure.
Microsoft references
Technical references checked on 6 November 2026. The example scripts have been reviewed and syntax checked; they have not been run against a live tenant.
- Install-Module cmdlet reference
- Connect-AzAccount cmdlet reference
- Search-AzGraph cmdlet reference
- Disconnect-AzAccount cmdlet reference
- Get Advisor recommendations in Azure Resource Graph
- Azure Resource Graph sample queries for Azure Advisor
- Advisor Recommendations - List REST reference
- Azure Advisor portal basics
- Introduction to Azure Advisor