[Azure]ARM模式下批量清理未使用的托管磁盘

原创 2017年10月11日 16:06:25

Azure ARM模式下提供了托管磁盘这种磁盘管理方式,虚拟机不用了之后删除掉,磁盘会残留下来造成资源浪费,可以使用下面的脚本进行批量清理。

脚本调用 Invoke-Parallel 来实现并发操作,提高清理效率。内容和思路比较简单,脚本内容如下:

$scriptSrc = "http://danielnorthstorage.blob.core.chinacloudapi.cn/fordownload/Invoke-Parallel.ps1";
$dest = ".\tmpScript.ps1";
$wc = New-Object System.Net.WebClient;
$wc.DownloadFile($scriptSrc, $dest);

# import the functions in the script file
. ".\tmpScript.ps1";

$subscriptions = Get-AzureRmSubscription;

foreach($subscription in $subscriptions)
{
    if ($subscription.State -eq "Disabled")
    {
        continue;
    }
    Write-Host ("Subscription : {0}" -f $subscription.SubscriptionName);
    [void](Select-AzureRmSubscription -SubscriptionName $subscription.SubscriptionName);
    $disks = Get-AzureRmDisk;
    $unUsedDisks = $disks | where {$_.OwnerId -eq $null};
    Write-Host "Remove managed disks:";
    foreach ($unUsedDisk in $unUsedDisks)
    {
        Write-Host ("Removing managed disk {0}(ResourceId:{1})" -f $unUsedDisk.Name, $unUsedDisk.Id);
    }
    $unUsedDisks | Invoke-parallel -ImportVariables -NoCloseOnTimeout -ScriptBlock { [void](Remove-AzureRmDisk -ResourceGroupName $_.ResourceGroupName -DiskName $_.Name -Force); };
}

Remove-Item -Path ".\tmpScript.ps1";

测试下来运行效率挺高,7个订阅下的100多块未使用的托管磁盘2分钟左右就清理干净了。调用的时候遇到 Invoke-Parallel 方法调用报错,有几块磁盘没有清理掉,等执行完了再执行一次清理掉残留的就好了。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[Azure]ARM虚拟机整机磁盘快照[3]——清空虚拟机快照

继续上一小节,清空快照比删除某组虚拟机磁盘快照要更容易一些,不需要进行区分或者分区,我们遍历所有虚拟机的磁盘,列出全部快照删除即可,脚本如下: param( [Parameter(Mandat...

[Azure]ARM虚拟机整机磁盘快照[1]——创建快照

这一篇分为三个部分,创建整机快照,删除虚拟机快照,从快照还原虚拟机。 第一部分先介绍快照功能,创建快照的思路比较简单,利用 Microsoft.WindowsAzure.Storage 库中的方法来获...

[Azure]ARM虚拟机整机磁盘快照[4]——从快照还原虚拟机

这个还原脚本有一个小前提,就是原虚拟机不能先删除,原因是为了简化操作和参数,脚本会从原来虚拟机的属性中读取资源组,虚拟网络,可用性集等属性,然后直接利用原虚拟机的某个时间点的快照在和原虚拟机同一子网下...

[Azure]使用Azure Powershell清理ASM模式下未使用的Disk和vhd

如题,通过脚本清理账号下所有订阅的ASM模式下没有使用的磁盘(Disk)和vhd文件。 脚本如下: $Cred = New-Object System.Management.Automat...

在Windows Azure上使用WAS和IIS托管服务

Adoption Program Insights 系列描述了微软服务咨询的经验 (包含在Windows Azure Technology Adoption Program内,该项目旨在帮助客户开发W...

[Azure]ARM模式下制作映像并创建虚拟机

在操作前需要明确一点:目前ARM模式下只能制作一般化(Generalized)的映像。   我们以一台Windows Server 2012的虚拟机为模板,首先在虚拟机内使用Sysprep进行一般...

[Azure]使用Powershell获取Azure ARM模式订阅下的一些常用信息

获取当前订阅下的虚拟机的基本信息: Get-AzureRmVM | select Name, ResourceGroupName, Location,@{Name="VmSize"; Express...

[Azure]Linux虚拟机使用rc.local启动脚本进行磁盘挂在

Azure Linux虚拟机如果在启动过程中出现磁盘检测失败,会导致虚拟机无法成功启动,这种情况下,由于没有控制台的登录方式,往往需要通过将系统磁盘挂在到其他虚拟机上进行fstab文件的修改或者磁盘修...

Azure ASM模式和ARM模式

Azure经典模式ASM过渡到资源管理模式ARM,紧耦合过渡到松耦合。     ASM:            1:混合对象的管理方式,并且都同属于一个管理实例中。            2:必须能连...

[Azure]基于Invoke-Parallel对Azure ARM虚拟机批量开关机

这个脚本基于Invoke-Parallel方法并行开关Azure ARM虚拟机: Invoke-Parallel脚本下载地址和介绍请参考链接:https://gallery.technet....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Azure]ARM模式下批量清理未使用的托管磁盘
举报原因:
原因补充:

(最多只允许输入30个字)