首页 > 解决方案 > Azure:删除实例及其所有相关资源(磁盘、网络接口)的脚本或命令

问题描述

我正在尝试找到一种方法来删除 azure 中的实例及其所有相关资源。但我没有看到任何直接的方法来完成它。我正在使用az vm delete -g resourcegroup -n myinstancename--yes当前仅删除实例的命令。在我的场景中,我不能使用 powershell。

标签: azureazure-virtual-machineazure-cli

解决方案


为了测试,我用1 NIC, 1 Public IP and 2 Data disks.

在此处输入图像描述

然后,我使用了以下az CLI脚本:

$osDisk =  (az vm show --resource-group ansumantest --name ansumantest --query "storageProfile.osDisk.name" --output tsv)
$datadisks = (az vm show --resource-group ansumantest --name ansumantest --query "storageProfile.dataDisks[].name" --output tsv)
$nics= (az vm show --resource-group ansumantest --name ansumantest --query "networkProfile.networkInterfaces[].id" --output tsv)
foreach ($nic in $nics){
   $publicIps=az network nic show --id $nic --query "ipConfigurations[].publicIpAddress.id" --output tsv
}
az vm delete --resource-group ansumantest --name ansumantest --yes
if ($osDisk) { 
   az disk show --resource-group ansumantest --name $osDisk --yes
}
foreach ($datadisk in $Datadisks){
  az disk delete --resource-group ansumantest --name $datadisk --yes
}
foreach ($nic in $nics){
  az network nic delete --id $nic
}
foreach ($publicIp in $publicIps){
  az network public-ip delete --id $publicIp
}

输出:

在此处输入图像描述


或者

您也可以在运行VM 删除命令时直接删除所有资源,但此方法有一些先决条件,即使用 CLI创建 VM时,您必须配置如下几个功能:

根据Microsoft 文档中的az vm create部分:

  1. [--os-disk-delete-option {删除,分离}]

指定删除 VM 时托管磁盘的行为,即是删除还是分离托管磁盘。接受值:删除、分离

  1. [--data-disk-delete-option]

指定在删除 VM 时是否应删除或分离数据磁盘。

  1. [--nic 删除选项]

指定删除 VM 时网络接口发生的情况。使用奇异值应用于所有资源,或使用 = 配置单个资源的删除行为。可能的选项是删除和分离。

如果上面3个配置为在创建VM时删除,那么当你运行它时,az vm delete它默认在要删除VM时删除这些资源。

参考:

Github 支持


推荐阅读