public/Get-AzureEmptyResourceGroups.ps1
function Get-AzureEmptyResourceGroups { <# .SYNOPSIS Get Emptyresource groups and delete them. .DESCRIPTION Get-AzureEmptyResourceGroups cmdlet finds the empty resourcegroups and return them to be deleted. .PARAMETER subscriptionName Specify the subscriptionName to find the empty resource groups in that specified subscription. .PARAMETER delete Specify $true to delete resource groups, default is $false to strictly return empty resource groups. .EXAMPLE Get-AzureEmptyResourceGroups -subscriptionName <subscriptionName> Only return resource groups, without deleting. .EXAMPLE Get-AzureEmptyResourceGroups -subscriptionName <subscriptionName> -delete $true Delete empty resource groups. #> [cmdletbinding()] param ( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$subscriptionName, [Parameter()] [bool]$Delete = $false ) Process { # check to see if local token exists (ran Login-AzureRMAccount) if (($null -eq (Get-AzureRmContext).Account)) { Write-Warning "Please run < Login-AzureRMAccount > first to create a session token...exiting." break } Try { Select-AzureRmSubscription -SubscriptionName $subscriptionname -ErrorAction Stop -Verbose | Out-Null } Catch { $error[0].Exception break } $resources = Get-AzureRmResource $rgs = Get-AzureRmResourceGroup $emptyrgs = @() foreach ($r in $rgs) { $validate = $Resources | Where-Object {$_.resourcegroupname -like $r.resourcegroupname} if ($validate.count -eq 0) { $emptyrgs += $r.resourcegroupname } elseif ($validate.count -ge 1) { Write-Verbose "$($r.ResourceGroupName) contains resources" } } if ($emptyrgs.count -ne 0) { Write-Warning "Empty resource group were found, returning..." # Delete empty resource groups if 'Delete' is set to true. if (($Delete -eq $true)) { Write-Warning "'Delete' bool set to true, deleting empty resource groups." Try { $emptyrgs | ForEach-Object {Remove-AzureRmResourceGroup -Name $_ -Force -ErrorAction Stop -Verbose} return $deletergs } Catch { $error[0] break } } Write-Output "'Delete' bool set to false (default), returning empty resources group WITHOUT deleting." return $emptyrgs } else { Write-Output "No empty resources groups found." } } } |