Azure PowerShellを使ってアタッチされてないAzure Managed Disksやネットワークインターフェースを取得削除
Azure VMを削除した場合VM自体は削除されますが、VMに紐づいていたManaged Disksやネットワークインターフェースは一緒に削除されません。
Managed Disksやネットワークインタフェースを個別に削除する必要があります。特にManaged Disksは削除しない限り使ってなくても課金が継続さます。使ってない場合は削除しておいた方がお得です。
今回はリソースグループ内で利用されていないManaged Disksやネットワークインターフェースをまとめて削除するPowerShellを作ってみました。
使われていないManaged Disksをまとめて削除するPowerShell
使用されていないManaged Disks一覧の取得、削除を行ってみます。
所有者VMが存在しないManaged Disksを使用されていないディスクとしています。
-
- 対象リソースグループ名を指定する
- 削除の場合は1を指定する。取得表示のみの場合は0を指定する。
- 確認メッセージを表示する場合は-Forceを外してください。
#対象のRG名を指定 $managedDisks = Get-AzureRmDisk foreach ($md in $managedDisks) { if($md.ManagedBy -eq $null| Where { $md.ResourceGroupName -eq $rgName }){ #削除の場合は1、確認だけの場合は0を指定 if($deleteUnattachedDisks -eq 1){ Write-Host “Deleting unattached Managed Disk with Id: $($md.Id)" #確認メッセージを表示する場合は、-Forceを削除すること $md | Remove-AzureRmDisk -Force Write-Host “Deleted unattached Managed Disk with Id: $($md.Id) “ }else{ $md.Id } } } |
削除された場合は、以下のようなメッセージが表示されます。
Deleted unattached Managed Disk with Id: /subscriptions/”SubscriptionID”/resourceGroups/”RG名”/providers/Microsoft.Compute/disks/”Disk名”
使われていないAzure ネットワークインターフェースをまとめて削除するPowerShell
Managed Disksと同様に、使用されていないネットワークインターフェースの一覧の取得、削除を行ってみました。
接続先が存在しないネットワークインターフェースを使用されていないディスクとしています。
-
- 対象リソースグループ名を指定する
- 削除の場合は1を指定する。取得表示のみの場合は0を指定する。
- 確認メッセージを表示する場合は-Forceを外してください。
#対象のRG名を指定 $rgName =“リソースグループ名" $deleteNetworkIF=1 $NetworkIF = Get-AzureRmNetworkInterface foreach ($nic in $NetworkIF) { #リソースグループを指定しない場合は、これに置き換える。 if($nic.VirtualMachine -eq $null| Where { $nic.ResourceGroupName -eq $rgName }){ #削除の場合は1、確認だけの場合は0を指定 if($deleteNetworkIF -eq 1){ Write-Host “Deleting unattached Network Interface with Name: $($nic.name)" #確認メッセージを表示する場合は、-Forceを削除すること $md | Remove-AzureRmNetworkInterface -Force Write-Host “Deleting unattached Network Interface with Name: $($nic.Name) “ }else{ $nic.Id } } } |
削除された場合は、以下のようなメッセージが表示されます。
Deleted unattached Managed Disk with Id: /subscriptions/”SubscriptionID”/resourceGroups/”RG名”/providers/Microsoft.Network/networkInterfaces/"ネットワークインターフェース名”
仮想マシン(Azure VM)と一緒に削除はこちらで試しております。