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

如何使用PowerShell读取Azure REST API返回对象中的指定值

捕获Azure OpenAI指标数据中的第二个动态值

你需要在每次REST调用后,从返回的$restcall.value.timeseries.data数组中提取第二个元素(PowerShell数组索引从0开始,对应索引[1]),并将其与当前循环的上下文信息绑定保存,避免值被后续循环覆盖。

修改后的完整代码如下:

Select-AzSubscription -SubscriptionId $subId
# 变量定义
$metricname = "GeneratedTokens", "TokenTransaction","ProcessedPromptTokens", "Latency"
$aggtype = "Total", "Average", "Maximum"
$timespan = "2023-12-25T11:05:00.000Z/2024-02-14T11:05:00.000Z"
# 用于存储捕获的结果
$capturedResults = @()

# 获取OpenAI账号
$res = Get-AzCognitiveServicesAccount
$openaiAcc = $res | Where-Object {$_.Endpoint -match 'openai.azure.com/'}

# 生成Bearer令牌
$accesstoken = (Get-AzAccessToken).Token
$headers = @{   
 'Authorization' = "Bearer $accesstoken"
}

foreach($openai in $openaiAcc){
    $openaiName = $openai.Name
    $openaiId = $openai.id
    $subscriptionId = $openaiId.split('/')[2]
    $RGName = $openai.ResourceGroupName
    
    foreach($metric in $metricname){
        Write-Host "当前指标: $metric"
        foreach($agg in $aggtype){
            $url = "https://management.azure.com/$openaiId/providers/Microsoft.Insights/metrics?timespan=$timespan&metricnames=$metric&aggregation=$agg&api-version=2023-10-01&interval=FULL"
            $restcall = Invoke-RestMethod -Method GET -Uri $url -Headers $headers
            $object = $restcall.value.timeseries.data
            
            # 捕获第二个值(索引[1]),并保存上下文信息
            if ($object.Count -ge 2) {
                $secondValue = $object[1]
                $resultObj = [PSCustomObject]@{
                    OpenAIAccount = $openaiName
                    ResourceGroup = $RGName
                    MetricName = $metric
                    AggregationType = $agg
                    SecondDataValue = $secondValue
                }
                $capturedResults += $resultObj
                Write-Host "已捕获[$openaiName]-[$metric]-[$agg]的第二个数据值: $secondValue"
            } else {
                Write-Warning "[$openaiName]-[$metric]-[$agg]的返回数据不足2个,无法捕获第二个值"
            }
        }
    }
}

# 输出所有捕获的结果
$capturedResults

关键说明:

  • 新增$capturedResults数组存储每次循环的捕获结果,避免值被后续循环覆盖
  • 用[PSCustomObject]封装OpenAI账号、指标名、聚合类型等上下文信息和目标值,方便后续查看、导出或处理
  • 添加判断逻辑防止返回数据不足2个时出现索引越界错误
  • 最终可直接查看捕获结果,或导出为CSV文件(如$capturedResults | Export-Csv -Path "OpenAI_Metrics_SecondValues.csv" -NoTypeInformation)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:12:22