You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

排查Azure订阅中PowerShell排除指定资源/组的删除脚本错误

问题分析与修正

核心问题

你的脚本把rgGrzesiek1整个排除在了资源组处理列表之外,导致这个组里的所有资源都不会被遍历和清理,自然全部保留。同时脚本还有两处语法错误:

  1. Where-Object {$.Name -notin $excludedResources } 里的$.Name缺少下划线,应为$_.Name
  2. 第二个删除资源组的foreach循环没有闭合的},会触发语法错误

修正思路

要实现仅保留rgGrzesiek1里的webapp1,删除该组内其他资源,且不删除这个资源组,需要拆分处理逻辑:

  • 单独处理被排除的资源组:遍历rgGrzesiek1,删除其中除webapp1外的所有资源
  • 处理其他资源组:删除组内所有资源后,再删除资源组本身

修正后的脚本

Set-AzContext -SubscriptionId (已隐藏)

$excludedResourceGroups = @("rgGrzesiek1")
$excludedResources = @("webapp1")

# 处理被排除的资源组:仅保留指定资源,删除其余
foreach ($excludedRg in $excludedResourceGroups) {
    $resources = Get-AzResource -ResourceGroupName $excludedRg | Where-Object { $_.Name -notin $excludedResources }
    foreach ($resource in $resources) {
        Remove-AzResource -ResourceId $resource.ResourceId -Force
    }
}

# 处理其他资源组:删除所有资源后删除资源组
$resourceGroups = Get-AzResourceGroup | Where-Object { $_.ResourceGroupName -notin $excludedResourceGroups }
foreach ($resourceGroup in $resourceGroups) {
    # 删除组内所有资源
    $resources = Get-AzResource -ResourceGroupName $resourceGroup.ResourceGroupName
    foreach ($resource in $resources) {
        Remove-AzResource -ResourceId $resource.ResourceId -Force
    }
    # 删除资源组
    Remove-AzResourceGroup -Name $resourceGroup.ResourceGroupName -Force
}

关键说明

  • 单独拆分被排除资源组的处理逻辑,确保rgGrzesiek1里除webapp1外的资源都会被清理
  • 修复了两处语法错误,保证脚本可正常执行
  • 其他资源组的逻辑保持原有意图:先删除组内所有资源,再删除资源组本身

内容的提问来源于stack exchange,提问作者Grzesiek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 08:45:03