All scripts
Azure AI 217
Get-AzureReservationUtilizationReport
Reports utilization percentage for every reserved instance and savings plan, flagging underused reservations, where you paid upfront for capacity that is not actually being consumed.
Get-AzureReservationUtilizationReport.ps1
<#
.SYNOPSIS
Reports utilization for Azure reservations and savings plans.
.DESCRIPTION
Lists every reservation with its current utilization percentage,
flagging any running below a healthy threshold, since an underused
reservation means you paid upfront for capacity that is not
actually being consumed.
.PARAMETER MinUtilizationPercent
Utilization percent below which a reservation is flagged. Defaults to 70.
.EXAMPLE
.\Get-AzureReservationUtilizationReport.ps1 -MinUtilizationPercent 80
.NOTES
Requires the Az.Billing module and an active Connect-AzAccount session
with billing reader access.
.AUTHOR
Shehryar Hassan
#>
param(
[double]$MinUtilizationPercent = 70
)
$orders = Get-AzReservationOrder
$report = foreach ($order in $orders) {
$reservations = Get-AzReservation -ReservationOrderId $order.Name
foreach ($reservation in $reservations) {
$utilization = Get-AzReservationUtilizationSummary -ReservationOrderId $order.Name -ReservationId $reservation.Name -Grain Daily -ErrorAction SilentlyContinue
$avgUtil = ($utilization.Properties.UtilizationPercentage | Measure-Object -Average).Average
[pscustomobject]@{
ReservationName = $reservation.Name
Sku = $reservation.SkuName
AvgUtilization = [math]::Round($avgUtil, 1)
Underutilized = $avgUtil -lt $MinUtilizationPercent
}
}
}
$report | Where-Object Underutilized | Format-Table -AutoSize
Read it before you run it, and test in a safe tenant first.