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

使用PowerShell创建Azure资源删除锁时报错如何解决?

Azure PowerShell 创建删除锁脚本错误修复方案

错误根因定位

  • 错误1:获取资源时错误使用了Format-Table命令。Format-Table属于格式化输出命令,执行后返回的是格式化显示对象而非原生Azure资源对象,导致后续循环中无法读取Name、ResourceGroupName、ResourceType等资源属性,触发空值报错。
  • 错误2:New-AzResourceLock命令中使用了未定义的$rg变量,脚本中没有对该变量赋值的逻辑,会导致资源组参数无效。

修复后脚本

# 登录Azure账户
Login-AzAccount

# 选择目标订阅
Select-AzSubscription -Subscription "test.subscription"

# 定义目标资源组名称
$targetRG = "dummy_rg"

# 获取资源组下所有资源(移除Format-Table,保留原生资源对象)
$Resources = Get-AzResource -ResourceGroupName $targetRG

# 遍历资源,不存在删除锁则创建
foreach($Resource in $Resources) {
    $ResourceName = $Resource.Name
    $lck = Get-AzResourceLock -ResourceGroupName $Resource.ResourceGroupName -ResourceName $ResourceName -ResourceType $Resource.ResourceType
    
    if ($null -eq $lck)
    {
        Write-Host "$ResourceName 无删除锁,正在创建..."
        New-AzResourceLock -ResourceGroupName $Resource.ResourceGroupName -ResourceName $ResourceName -ResourceType $Resource.ResourceType -LockName "$ResourceName-lck" -LockLevel CanNotDelete -Force
        Write-Host "$ResourceName 删除锁已创建完成"
    }
    else 
    {
        Write-Host "$ResourceName 已存在删除锁,跳过创建"
    }
}

额外注意事项

  • 执行脚本前请确认当前登录账户拥有资源组的所有者或用户访问管理员权限,否则无法创建资源锁。
  • 如果需要对资源组本身也添加删除锁,可以在遍历资源结束后额外执行以下命令:
    New-AzResourceLock -ResourceGroupName $targetRG -LockName "$targetRG-rg-lck" -LockLevel CanNotDelete -Force
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:24:06