同一订阅下多个Azure存储账户生命周期管理自动化脚本咨询
Azure存储账户生命周期管理规则批量配置PowerShell脚本(适配自动化账户Runbook)
前置要求
- 自动化账户需分配对应存储账户所属订阅/资源组的存储账户参与者角色权限
- 自动化账户PowerShell Runbook运行环境需提前导入
Az.Storage、Az.Accounts模块 - 若20个存储账户归属多个订阅,需在脚本中新增对应订阅遍历逻辑
适配Runbook的完整脚本
# 使用自动化账户系统分配托管标识免密登录Azure Connect-AzAccount -Identity | Out-Null # 自定义配置参数,按需修改 $targetSubscriptionId = "替换为你的订阅ID" # 填入需要配置的20个存储账户名称 $targetStorageAccounts = @("stg-xxx-001","stg-xxx-002","stg-xxx-020") $lifecycleRuleName = "自动分层规则_90天冷层_120天归档" # 切换到目标订阅上下文 Set-AzContext -SubscriptionId $targetSubscriptionId | Out-Null # 定义生命周期规则:修改后90天转冷层,修改后120天转归档层 $policyAction = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction TierToCool -DaysAfterModificationGreaterThan 90 $policyAction = Add-AzStorageAccountManagementPolicyAction -InputObject $policyAction -BaseBlobAction TierToArchive -DaysAfterModificationGreaterThan 120 $policyFilter = New-AzStorageAccountManagementPolicyFilter -BlobType blockBlob $lifecycleRule = New-AzStorageAccountManagementPolicyRule -Name $lifecycleRuleName -Action $policyAction -Filter $policyFilter -Enabled $true # 批量应用规则 foreach ($sa in $targetStorageAccounts) { $storageAccount = Get-AzStorageAccount | Where-Object {$_.StorageAccountName -eq $sa} if ($null -ne $storageAccount) { # 若需要保留原有生命周期规则,可先拉取现有规则追加新规则后再提交 Set-AzStorageAccountManagementPolicy -StorageAccountName $sa -ResourceGroupName $storageAccount.ResourceGroupName -Rule $lifecycleRule Write-Output "已完成存储账户 $sa 的生命周期规则配置" } else { Write-Warning "未找到存储账户 $sa,请检查名称或订阅配置是否正确" } }
使用注意事项
- 正式运行前可先注释
Set-AzStorageAccountManagementPolicy行,运行后核对输出的匹配存储账户列表,确认无误后再取消注释执行配置 - 若存储账户已存在其他生命周期规则,可通过
Get-AzStorageAccountManagementPolicy获取现有规则集合,将新规则追加到集合后再传入Set-AzStorageAccountManagementPolicy的-Rule参数,避免覆盖原有规则 - 脚本默认仅对块Blob生效,若需要包含追加Blob等其他类型,可修改
-BlobType参数值
内容的提问来源于stack exchange,提问作者Kunal P
相关产品推荐
相关产品推荐

