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

如何用Get-AzScheduledQueryRule获取V1(API 2018-04-16)计划查询日志警报详情

解决V1日志警报无法通过Get-AzScheduledQueryRule获取JSON负载的问题

核心原因

Get-AzScheduledQueryRule cmdlet主要针对V2版本(API版本2021-08-01及以上)的日志警报设计,对于V1版本(API版本2018-04-16)的旧日志警报,部分深层属性(比如你需要的JSON负载)不会被默认返回。

可行解决方案

方案1:使用-ExpandProperties参数强制展开所有属性

尝试在命令中添加-ExpandProperties参数,该参数会强制返回警报的完整属性集,包括V1警报的JSON负载相关内容:

Get-AzScheduledQueryRule -ResourceGroupName <你的资源组名> -Name <警报名称> -ExpandProperties

执行后,你可以通过访问对象的Properties字段下的子属性来获取所需的JSON负载,比如:

$alert = Get-AzScheduledQueryRule -ResourceGroupName "rg-example" -Name "v1-alert-example" -ExpandProperties
$alert.Properties.Source.Query  # 获取查询语句负载
$alert.Properties.Action  # 获取动作相关的JSON配置

方案2:直接调用Azure REST API

如果-ExpandProperties参数仍无法满足需求,可以直接调用Azure REST API的2018-04-16版本来获取V1警报的完整信息:

# 先获取访问令牌
$token = (Get-AzAccessToken -ResourceUrl "https://management.azure.com").Token

# 构造API请求URL
$apiUrl = "https://management.azure.com/subscriptions/<你的订阅ID>/resourceGroups/<资源组名>/providers/microsoft.insights/scheduledqueryrules/<警报名称>?api-version=2018-04-16"

# 发送请求获取完整JSON
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization = "Bearer $token"} -Method Get

该方法会返回V1警报的完整JSON结构,包含所有你需要的负载信息。

方案3:筛选并批量导出V1警报

如果你需要批量处理所有V1日志警报,可以结合Where-Object筛选API版本为2018-04-16的警报,再逐一获取详细信息:

# 获取所有V1日志警报
$v1Alerts = Get-AzScheduledQueryRule | Where-Object {$_.Properties.ApiVersion -eq "2018-04-16"}

# 遍历导出每个警报的完整属性
foreach ($alert in $v1Alerts) {
    $fullAlert = Get-AzScheduledQueryRule -ResourceGroupName $alert.ResourceGroupName -Name $alert.Name -ExpandProperties
    $fullAlert | ConvertTo-Json -Depth 10 | Out-File "C:\temp\v1-alert-$($alert.Name).json"
}

注意事项

  • V1日志警报的属性结构和V2存在差异,获取到的JSON负载字段可能与V2不同,需要根据实际结构提取所需内容。
  • 确保你的Azure PowerShell模块是最新版本,旧版本可能存在参数支持不全的问题,可以通过Update-Module -Name Az更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:19:56