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

Azure Automation Runbook:如何等待Set-AzStorageAccount执行完成

监控Azure存储账户冗余策略修改完成的PowerShell实现

当用Set-AzStorageAccount修改存储账户冗余策略时,命令会立即返回而不等待异步操作完成,你可以通过轮询存储账户状态或跟踪操作ID的方式,确保操作完成后再执行后续代码。

方法一:轮询存储账户的部署状态

执行修改命令后,定期查询存储账户的ProvisioningState属性,直到其变为Succeeded:

# 执行冗余策略修改命令
Set-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName -SkuName $myRundandancy

# 轮询等待操作完成
$timeoutMinutes = 30
$startTime = Get-Date

do {
    Start-Sleep -Seconds 10
    $storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName
    Write-Host "当前存储账户状态: $($storageAccount.ProvisioningState)"

    # 检查是否超时
    $elapsedMinutes = (Get-Date - $startTime).TotalMinutes
    if ($elapsedMinutes -ge $timeoutMinutes) {
        throw "修改操作超时,已等待超过$timeoutMinutes分钟"
    }
} while ($storageAccount.ProvisioningState -ne "Succeeded")

Write-Host "存储账户冗余策略修改完成,可执行后续代码"

方法二:跟踪操作ID监控状态

给Set-AzStorageAccount加上-PassThru参数会返回操作对象,通过这个对象的ID可以直接跟踪操作状态:

# 执行修改命令并捕获操作信息
$operation = Set-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName -SkuName $myRundandancy -PassThru

# 轮询操作状态
$timeoutMinutes = 30
$startTime = Get-Date

do {
    Start-Sleep -Seconds 10
    $operationStatus = Get-AzResourceOperation -OperationId $operation.Id
    Write-Host "当前操作状态: $($operationStatus.Status)"

    # 检查超时
    $elapsedMinutes = (Get-Date - $startTime).TotalMinutes
    if ($elapsedMinutes -ge $timeoutMinutes) {
        throw "操作超时,已等待超过$timeoutMinutes分钟"
    }
} while ($operationStatus.Status -ne "Succeeded")

Write-Host "冗余策略修改操作完成"

注意事项

  • 调整Start-Sleep的间隔时间:根据操作的预估耗时设置,避免过于频繁调用API导致限流,一般10-30秒比较合适。
  • 必须添加超时机制:防止因异常情况导致脚本无限等待,可根据实际场景调整超时时长。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:45:11