概要
長期間にわたり多数の検証プロジェクトで利用していると Azure サブスクリプション内に、リソースを持たない空のリソースグループがゴミとして多数残ったりします。リソースグループの数が多い場合、それらを一つ一つ目視で確認して削除していくのはかなり面倒です。
スクリプトによる一括削除
以下の PowerShell スクリプトは、ログインしたユーザーが所有する全ての Azure サブスクリプションを列挙し、その中にあるリソースを持たない空のリソースグループを強制削除していくコード例となります。あくまでサンプルですので、本スクリプトの使用は自己責任でお願いします。
remove-RG.ps1
# Azure へログインする
Login-AzureRmAccount
# サブスクリプションの列挙
$subscriptions = Get-AzureRmSubscription
foreach($subscription in $subscriptions)
{
Select-AzureRmSubscription -SubscriptionID $subscription.Id
# リソース一覧とリソースグループ一覧を取得する
$resources = Get-AzureRmResource
$resourceGroups = Get-AzureRmResourceGroup
# 空のリソースグループ(リソースを持たないリソースグループ)を削除する
foreach($resourceGroup in $resourceGroups)
{
# リソースを持っているかの判定
$isEmptyResourceGroup = $TRUE;
foreach($resource in $resources)
{
if($resource.ResourceGroupName -eq $resourceGroup.ResourceGroupName)
{
$isEmptyResourceGroup = $FALSE;
break;
}
}
# リソースを持っていない場合は削除
if($isEmptyResourceGroup -eq $TRUE)
{
$resourceGroup.ResourceGroupName
Remove-AzureRmResourceGroup -ResourceGroupName $resourceGroup.ResourceGroupName -Force
echo "*** Removed ***"
}
}
}