【问题标题】:Delete every VM including Resources Group in Azure删除每个 VM,包括 Azure 中的资源组
【发布时间】:2021-08-08 19:17:25
【问题描述】:

我正在尝试制作一个 bash 脚本来删除所有订阅中可用的每个 VM 及其关联的资源组。单行代码。

所以,到目前为止,我所做的是:

for i in `az account list --query "[].{id:id}" --output tsv`; do az account set --subscription $i; VMS=`az vm list --query [].name --output tsv`; tLen=${#VMS[@]} ; for (( i=0; i<${tLen}; i++ )); do RG=`az vm list --query [$i].resourceGroup --output tsv`; az vm delete --ids $(az vm list -g ${RG} --query "[].id" -o tsv) --yes --no-wait ; az group delete --name ${RG} --yes --no-wait; done ; done

嗯,它有效,但并不完美。它留下了一些虚拟机及其关联的资源组。所以,我想把代码上传到 stack-overflow 上。好吧,它可能对某人有用,我也需要一些帮助。

那么,有人可以帮助我吗?请检查我的代码,我非常擅长编码。我在这里需要一些专家建议。在此先感谢:)

【问题讨论】:

  • 您可以简单地删除资源组,而不是单独删除 VM 和包含的资源组。这也会删除虚拟机。无需先删除虚拟机再删除资源组。
  • @GauravMantri 感谢您的提示。我调整了我的代码,现在它可以完美运行了。我将在答案中发布代码。

标签: bash azure command-line-interface azure-cli azureportal


【解决方案1】:

我调整了我的代码,现在这段代码可以按照我的意愿完美运行。 此代码删除每个 Azure 帐户订阅中可用的每个资源组。

for i in `az account list --query "[].{id:id}" --output tsv`; do az account set --subscription $i; for j in `az vm list --query [].resourceGroup --output tsv`; do az group delete --name $j --yes --no-wait; done ; done

它适用于 Powershell 和 Bash:

echo 'for i in `az account list --query "[].{id:id}" --output tsv`; do az account set --subscription $i; for j in `az vm list --query [].resourceGroup --output tsv`; do az group delete --name $j --yes --no-wait; done ; done' > deletevms.sh && bash deletevms.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    相关资源
    最近更新 更多