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

Azure资源跨订阅迁移时-ErrorAction SilentlyContinue不生效问题

问题原因
  1. try/catch作用范围错误:你当前的try块包裹了完整的foreach循环,只要循环内任意操作抛出终止错误,就会直接跳出整个循环进入外层catch块,后续所有资源组都不会被处理。
  2. -ErrorAction SilentlyContinue不生效:该参数仅能忽略非终止错误,而Azure PowerShell的资源迁移操作失败时抛出的是终止错误,所以这个参数无法阻止错误向上抛出,自然也无法让循环继续执行。
修复后的脚本
$list = ("RG1","RG2","RG3","RG4","RG5")
$destinationSubscriptionID = "你的目标订阅ID"
# 定义数组存储迁移失败的资源组信息,方便后续排查
$failedRGs = @()

foreach($RG in $list)
{
    try
    {
        Write-Output "开始迁移资源组:$RG"
        # 把-ErrorAction改为Stop,将所有错误转为终止错误,确保全部能被catch捕获
        Move-AzResource -ResourceId $Resource.ResourceId -DestinationSubscriptionId $destinationSubscriptionID -DestinationResourceGroupName $RG -Force -ErrorAction Stop
        Write-Output "资源组 $RG 迁移完成"
    }
    catch
    {
        $errorMsg = $_.Exception.Message
        Write-Output "资源组 $RG 迁移失败,错误信息:$errorMsg"
        # 记录失败的资源组信息
        $failedRGs += [PSCustomObject]@{
            资源组名称 = $RG
            错误信息 = $errorMsg
            错误关联ID = $_.Exception.CorrelationId
        }
    }
}

# 迁移全部完成后输出失败清单
if ($failedRGs.Count -gt 0) {
    Write-Output "`n==================== 迁移失败清单 ===================="
    $failedRGs | Format-Table -AutoSize
    # 可选:将失败清单导出为CSV文件留存
    # $failedRGs | Export-Csv -Path "迁移失败资源组.csv" -NoTypeInformation -Encoding UTF8
}
关键修改说明
  • 将原有的外层try/catch移到了foreach循环内部,单个资源组迁移失败只会触发当前catch块,不会中断整个循环,自动进入下一个资源组的处理
  • 把-ErrorAction SilentlyContinue替换为-ErrorAction Stop,确保所有迁移相关错误都转为终止错误,不会出现漏捕获的问题
  • 新增了失败记录逻辑,迁移完成后可以统一查看所有失败项,也可以直接导出为文件留存,方便后续排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:45:03