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

如何用Azure CLI/Bash列出资源组/订阅的所有诊断设置?

列出订阅或资源组下所有Diagnostic Settings的Bash脚本

遍历当前订阅下所有资源的诊断设置

这个脚本会遍历当前登录订阅内的所有资源,检查并输出带有诊断设置的资源及其配置信息:

#!/bin/bash

# 遍历当前订阅下所有资源ID
az resource list --query "[].id" -o tsv | while read resource_id; do
    # 获取该资源的诊断设置
    settings=$(az monitor diagnostic-settings list --resource "$resource_id" -o json)
    # 仅当存在诊断设置时输出
    if [[ $(echo "$settings" | jq 'length') -gt 0 ]]; then
        echo "=== 资源ID: $resource_id ==="
        # 过滤并输出关键配置项
        echo "$settings" | jq '.value[] | {名称: .name, 存储账户ID: .storageAccountId, 事件中心名称: .eventHubName, Log Analytics工作区ID: .workspaceId}'
        echo ""
    fi
done

遍历指定资源组下所有资源的诊断设置

如果只需要检查某个资源组内的资源,修改脚本如下,替换your-resource-group-name为目标资源组名称:

#!/bin/bash

# 指定目标资源组
RESOURCE_GROUP="your-resource-group-name"

# 遍历资源组内所有资源ID
az resource list --resource-group "$RESOURCE_GROUP" --query "[].id" -o tsv | while read resource_id; do
    settings=$(az monitor diagnostic-settings list --resource "$resource_id" -o json)
    if [[ $(echo "$settings" | jq 'length') -gt 0 ]]; then
        echo "=== 资源ID: $resource_id ==="
        echo "$settings" | jq '.value[] | {名称: .name, 存储账户ID: .storageAccountId, 事件中心名称: .eventHubName, Log Analytics工作区ID: .workspaceId}'
        echo ""
    fi
done

使用说明

  • 确保已通过az login登录Azure CLI,并切换到目标订阅(可通过az account set --subscription <订阅ID/名称>切换)
  • 需要安装jq工具来处理JSON输出,Debian/Ubuntu系统可通过sudo apt install jq安装,macOS用brew install jq
  • 若订阅/资源组内资源数量较多,脚本运行时间会较长,可在az resource list命令后添加--resource-type <资源类型>参数缩小遍历范围(例如--resource-type "Microsoft.Compute/virtualMachines"仅遍历虚拟机)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:25:04