Identifying Unused Azure Resources in Your Subscription with PowerShell

In any Azure subscription, over time, you may accumulate a variety of resources that are no longer actively being used. These unused resources can contribute to unnecessary costs and clutter in your environment. To optimize your Azure infrastructure, it’s essential to identify and manage these resources efficiently. In this blog post, we’ll explore how you can leverage PowerShell to identify and handle unused Azure resources in your subscription.

Identifying Unused Azure Resources

Before we begin, make sure you have the following prerequisites in place:

  1. An Azure subscription: If you don’t have one, you can create a free account at
  2. PowerShell: Install PowerShell and the Azure PowerShell module (Az) if you haven’t done so already. You can download PowerShell from the official website ( and install the Azure module using the following command: Install-Module -Name Az -AllowClobber -Scope CurrentUser.

To identify unused Azure resources in your subscription, we’ll use a PowerShell script. The script will connect to your Azure subscription, retrieve all resources, and check if each resource is being used. Let’s walk through the steps.

The script you want to use looks like this:

# Connect to Azure subscription

# Specify the Azure subscription name or ID
$subscriptionNameOrId = "SubscriptionName"

# Get all resources in the subscription
$resources = Get-AzResource -ExpandProperties -ResourceGroupName "*" -ResourceType "*" -WarningAction SilentlyContinue

# Store the unused resources
$unusedResources = @()

# Iterate over each resource
foreach ($resource in $resources) {
    $resourceId = $resource.Id
    $resourceType = $resource.Type

    # Check if the resource is being used
    $isUsed = Test-AzResourceUse -ResourceId $resourceId -WarningAction SilentlyContinue

    # If the resource is not used, add it to the unused resources array
    if (!$isUsed) {
        $unusedResources += $resource

# Output the unused resources
if ($unusedResources.Count -gt 0) {
    Write-Host "Unused resources in subscription '$subscriptionNameOrId':"
    $unusedResources | Format-Table -AutoSize
} else {
    Write-Host "No unused resources found in subscription '$subscriptionNameOrId'."

Remember replacing the Placeholder of your subscription ID with your actual subscription ID.

Executing the Script

To execute the PowerShell script:

  1. Open PowerShell or PowerShell ISE.
  2. Copy and paste the script into the PowerShell window.
  3. Replace "YourSubscriptionNameOrId" with the name or ID of your Azure subscription.
  4. Run the script.

The script will connect to your Azure subscription, retrieve all resources, and determine which ones are unused. It will then display a list of the unused resources or indicate if no unused resources are found.


Identifying and managing unused Azure resources is crucial for optimizing your Azure infrastructure in terms of cost and performance. With the help of PowerShell and the Azure PowerShell module, you can easily automate the process of identifying these resources. By regularly running the provided script in your Azure environment, you can ensure that you maintain a clean and cost-effective subscription.

Remember to periodically review and take appropriate actions on the identified unused resources, such as deleting or deprovisioning them, to avoid unnecessary costs and maintain a streamlined Azure infrastructure.

Happy resource optimization with Azure and PowerShell!

Leave a comment