使われていないAzure Managed Disksやネットワークインターフェースをまとめて削除

 

Azure VMを削除した場合、VM自体は削除されますが、VMに紐づいていたManaged Disksやネットワークインターフェースは一緒に削除されません。

Managed Disksやネットワークインタフェースを個別に削除する必要があります。特に、Managed Disksは削除しない限り使ってなくても課金が継続さます。不必要な場合は削除しておいた方がお得です。

Azure VM削除した時に、一緒に消し忘れる事も結構ありがちですし、都度個別に削除する作業も結構面倒です。

そこで今回はリソースグループ内で利用されていないManaged Disksやネットワークインターフェースをまとめて削除するPower Shellを作ってみました。

1.使われていないManaged Disksをまとめて削除するPower Shell

使用されていない、Managed Disks一覧の取得、削除を行ってみます。

所有者VMが存在しないManaged Disksを使用されていないディスクとしています。

    • 対象リソースグループ名を指定する
    • 削除の場合は1を指定する。取得表示のみの場合は0を指定する。
    • 確認メッセージを表示する場合は-Forceを外してください。

#対象のRG名を指定
$rgName =“リソースグループ名”
$deleteUnattachedDisks=0

$managedDisks = Get-AzureRmDisk foreach ($md in $managedDisks) {
#リソースグループを指定しない場合は置き換える。
#if$md.ManagedBy -eq $null)

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名”

2.使われていないAzure ネットワークインターフェースをまとめて削除するPower Shell

Managed Disksと同様に、使用されていないネットワークインターフェースの一覧の取得、削除を行ってみました。

接続先が存在しないネットワークインターフェースを使用されていないディスクとしています。

    • 対象リソースグループ名を指定する
    • 削除の場合は1を指定する。取得表示のみの場合は0を指定する。
    • 確認メッセージを表示する場合は-Forceを外してください。
#対象のRG名を指定
$rgName =“リソースグループ名”

$deleteNetworkIF=1

$NetworkIF = Get-AzureRmNetworkInterface foreach ($nic in $NetworkIF) {

#リソースグループを指定しない場合は、これに置き換える。
#if$nic.VirtualMachine -eq $null)

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/”ネットワークインターフェース名”