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

PowerShell中如何通过Azure CLI拆分匹配连续WebJob的名称与状态

问题根因

现有脚本存在两个核心问题:

  • 两次独立调用az cli命令分别拉取WebJob名称、状态,两个返回结果是独立的TSV字符串集合,没有内置的关联机制,无法保证顺序一一匹配
  • 手动通过Split('}')拆分字符串解析JSON结构的方式容错率极低,只要WebJob名称包含特殊字符就会解析错乱
正确实现方案

全程使用az cli官方的结构化输出能力,不需要手动拆分字符串,一次性获取全量WebJob属性完成匹配。

核心改动点

  1. 取消两次分别拉取name、status的TSV输出逻辑,改为单次调用az cli获取JSON格式的全量WebJob列表
  2. 通过PowerShell内置的ConvertFrom-Json将JSON文本转换为强类型对象数组,每个数组元素天然对应一个独立WebJob,自带name、status等属性

改动后的完整可运行脚本

$groups = Get-AzResourceGroup | Where-Object {$_.ResourceGroupName -like "*Dev*"}
foreach($group in $groups){
    Write-Host -ForegroundColor Cyan "processing resourceGroup: $($group.ResourceGroupName)"
    $webApps = Get-AzWebApp -ResourceGroupName $group.ResourceGroupName

    foreach($webApp in $webApps){
        Write-Host -ForegroundColor Yellow "Current WebApp: $($webApp.Name)"
        # 单次调用获取结构化连续WebJob列表
        $continuousWebJobs = az webapp webjob continuous list `
            --name $webApp.Name `
            --resource-group $group.ResourceGroupName `
            -o json | ConvertFrom-Json

        # 跳过无连续WebJob的应用
        if(-not $continuousWebJobs){
            Write-Host "No continuous WebJob found."
            continue
        }

        # 逐行输出WebJob名称与对应状态
        foreach($job in $continuousWebJobs){
            Write-Host "$($job.name) $($job.status)"
            # 如需仅筛选停止状态的WebJob,添加以下判断即可
            # if($job.status -eq 'Stopped'){
            #     Write-Host "$($job.name) $($job.status)"
            # }
        }
    }
}

注意事项

  • 禁止用手动拆分字符串的方式解析az cli返回的JSON结构,特殊字符场景下必然出现解析错误
  • 禁止拆分多次调用az cli获取不同属性,两次调用间如果WebJob列表发生变更,会直接导致名称与状态匹配错位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 16:36:08