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

 

Virtual Machineを削除した場合でも、Azure Managed Disksやネットワークインターフェースは削除されません。
特に、Managed Disksは課金が継続されるため、不必要な場合は削除しておいた方がお得です。

Virtual Machineを削除した場合に、都度個別に削除する作業も結構面倒ですし忘れがちです。

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

1.Managed Disksをまとめて削除するPowerShell

以下のPowerShellを実行すると、使用されていない、Managed Disks一覧の取得、削除が出来ます。

#対象のRG名を指定
$rgName =”RG名”
$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.ネットワークインターフェースをまとめて削除するPowerShell

Managed Disksと同様に、使用されていないネットワークインターフェースも、一覧の取得、削除が出来ます。

#対象のRG名を指定
$rgName =”RG名”

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