无法通过Azure AZ 2.0 PowerShell模块列出告警求助
问题分析与解决方案
你遇到的问题其实不是Az.Monitor模块有故障,而是用错了针对新版告警的PowerShell命令——Get-AzAlertHistory这个cmdlet是专门针对旧版经典告警规则(类型为Microsoft.Insights/alertRules)设计的,而你部署的是新版多资源指标告警(类型为Microsoft.Insights/metricAlerts),两者的API和对应的PowerShell命令完全不兼容,所以才会只返回弃用警告但没有告警数据。
具体解决步骤:
- 先确认你的告警类型:在Azure门户中打开触发的告警规则,查看其资源ID,如果包含
Microsoft.Insights/metricAlerts,就属于新版多资源指标告警,需要使用以下命令来获取触发状态:
获取指定告警规则的触发状态
# 替换为你的资源组名和告警规则名称 Get-AzMetricAlertStatus -ResourceGroupName "your-resource-group" -Name "your-metric-alert-name"
批量查询订阅中所有触发的新版指标告警
如果要一次性找出订阅里所有状态为Fired的新版告警,可以用这条命令:
Get-AzMetricAlert | ForEach-Object { Get-AzMetricAlertStatus -ResourceGroupName $_.ResourceGroupName -Name $_.Name } | Where-Object { $_.Status -eq "Fired" }
关于你看到的警告信息
那些提示是Az.Monitor模块的弃用预告,只是告知未来版本会调整命名空间和参数,并不是导致你无法获取数据的原因,完全可以忽略这些警告。
总结一下:你部署的新版多资源指标告警,必须使用Get-AzMetricAlertStatus(而非Get-AzAlertHistory)来查询触发状态,这才是匹配新版告警类型的正确命令。
内容的提问来源于stack exchange,提问作者edwio
相关产品推荐
相关产品推荐

