azure - 您如何以编程方式删除资源组中除特定资源之外的所有内容?
问题描述
假设我有一个资源组 MyAppRG。它有一个存储帐户、一个 SQL 服务器、一个密钥库和一个 VM。如何以编程方式删除资源组中除存储帐户和密钥库之外的所有内容?
我知道有一种方法可以通过部署一个空的 arm 模板部署来删除资源组中的所有内容。我尝试在资源上使用 Get-AzResource 并将其添加到 ARM 模板的资源参数中,但它不起作用。像这样的东西:
$storageAccounts = Get-AzStorageAccount -ResourceGroupName "MyAppRG" | Get-AzResource
$emptyArmTemplate = @{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
contentVersion: "1.0.0.0",
"resources": @(storageAccounts),
}
New-AzResourceGroupDeployment -Name "test" -ResourceGroupName "MyAppRG" -TemplateObject $emptyArmTemplate -Force
但这不起作用,因为请求无效。
解决方案
您可以使用标签“过滤掉”您希望保留的资源,但这种方法的缺点是您需要知道删除资源的顺序。例如,您需要先删除 Web 应用程序,然后再删除应用程序托管计划。在下面的示例中,我有一个名为“DELETE”的标签,其值为“TRUE”。
get-AZresource -tagname delete -tagvalue true | Remove-AzResource
老实说,更好的方法是将您不想删除的所有项目保留在单独的资源组中,并认为 RG 具有生命周期边界。这样,当您准备好删除不需要的项目时,您可以在一个命令中吹走整个 RG。
此外,如果您担心有人意外删除某些资源,您应该使用资源锁在删除之前添加另一个检查点。
推荐阅读
- c# - 如何将String对象属性与C#中的字符串进行比较
- python-3.x - 导入我自己的类时出现“ModuleNotFoundError”
- google-apps-script - 将本地 GmailApp.sendEmail (GAS) 转换为 Web App 脚本
- tomcat - 保持授权状态
- django - Celery 或 urllib3 将我重定向到 https
- r - 在与 dtplyr 冲突的列连接后选择
- ruby-on-rails - 如何在 Ruby on Rails 中使用字符串访问实例关系?
- javascript - 如何制作可附加的可观察队列?
- vba - MS-ACCESS 写入冲突问题
- report - Sparx Enterprise Architect EA 在发布过程中截断图表