【Azure Developer】使用Azure Resource Graph的查询语法的示例
文章“【Azure Developer】在Azure Resource Graph Explorer中查看当前订阅下的所有资源信息列表并导出(如VM的名称,IP地址内网/公网,OS,区域等) ”的另一个示例。
问题描述
使用Azure Resource Graph查询:把这订阅(Subscription ID)下的VM虚拟机和相关磁盘信息拉取一下数据(VM名字,VM的tag,VM的资源ID,硬盘名字,硬盘大小,磁盘的资源ID)
问题答案
根据Azure Resource Graph Explorer中提供的Resources表来查看VM的相关信息。而磁盘相关的信息处于 properties.storageProfile.osDisk 以及 properties.storageProfile.dataDisks中。
示例查询语句为:
resources
| where type =~ 'microsoft.compute/virtualmachines'
| extend osDisk = properties.storageProfile.osDisk, disks = properties.storageProfile.dataDisks
| project name, tags, id, osDisk.name, osDisk.diskSizeGB, osDisk.managedDisk.id,
disks[0].name, disks[0].diskSizeGB,
disks[1].managedDisk.id, disks[1].name, disks[1].diskSizeGB, disks[1].managedDisk.id,
disks[2].name, disks[2].diskSizeGB,disks[2].managedDisk.id
查询结果示例:

附录一:新创建的VM如果时托管类的Disk,则Disk Size信息无法直接在Type == ‘microsoft.compute/virtualmachines’ 中获取到,需要在 type=='microsoft.compute/disks' 资源中关联出来。
参考示例
Resources
| where type == "microsoft.compute/virtualmachines"
| extend os = properties.storageProfile.imageReference.offer
| extend sku = properties.storageProfile.imageReference.sku
| extend hostName = properties.osProfile.computerName
| extend vmSize = properties.hardwareProfile.vmSize
| extend osDiskName = properties.storageProfile.osDisk.name
| extend osDiskSize = properties.storageProfile.osDisk.diskSizeGB
| extend dataDisks = properties.storageProfile.dataDisks
| extend managedDiskId_0= tolower(tostring(dataDisks[0].managedDisk.id))
| extend managedDiskId_1 = tolower(tostring(dataDisks[1].managedDisk.id))
| join kind=leftouter (
Resources
| where type == 'microsoft.compute/disks'
| project managedDiskId_0 = tolower(id),dataDisk_0_Name=name,dataDisk_0_SizeGB=properties.diskSizeGB)
on managedDiskId_0
| join kind=leftouter (
Resources
| where type == 'microsoft.compute/disks'
| project managedDiskId_1 = tolower(id),dataDisk_1_Name=name,dataDisk_1_SizeGB=properties.diskSizeGB)
on managedDiskId_1
| project subscriptionId, vmName = name, resourceGroup, location, hostName, os, sku, osDiskName, osDiskSize, vmSize, dataDisks,
managedDiskId_0, dataDisks[0].name, dataDisk_0_diskSizeGB=iif(isnull(dataDisks[0].diskSizeGB),dataDisk_0_SizeGB,dataDisks[0].diskSizeGB),
managedDiskId_1, dataDisks[1].name, dataDisk_1_diskSizeGB=iif(isnull(dataDisks[1].diskSizeGB),dataDisk_1_SizeGB,dataDisks[1].diskSizeGB),
properties
参考文档:
Azure Virtual Machines : https://docs.microsoft.com/en-us/azure/governance/resource-graph/samples/samples-by-category?tabs=azure-cli#azure-virtual-machines
Query operators : https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/queries
【Azure Developer】使用Azure Resource Graph的查询语法的示例的更多相关文章
- 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法
问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...
- 【Azure Developer】使用 Microsoft Graph API 获取 AAD User 操作示例
问题描述 查看官方文档" Get a user " , 产生了一个操作示例的想法,在中国区Azure环境中,演示如何获取AAD User信息. 问题解答 使用Microsoft G ...
- 【Azure Developer】Azure Graph SDK获取用户列表的问题: SDK中GraphServiceClient如何指向中国区的Endpoint:https://microsoftgraph.chinacloudapi.cn/v1.0
问题描述 想通过Java SDK的方式来获取Azure 门户中所列举的用户.一直报错无法正常调用接口,错误信息与AAD登录认证相关,提示tenant not found. 想要实现的目的,通过代码方式 ...
- 【Azure Developer】使用Microsoft Graph API 如何批量创建用户,用户属性中需要包含自定义字段(如:Store_code,Store_name等)
Microsoft Graph 是 Microsoft 365 中通往数据和智能的网关. 它提供统一的可编程模型,可用于访问 Microsoft 365.Windows 10 和企业移动性 + 安全性 ...
- 【Azure Developer】使用Microsoft Graph API创建用户时候遇见“401 : Unauthorized”“403 : Forbidden”
问题描述 编写Java代码调用Mircrosoft Graph API创建用户时,分别遇见了"401 : Unauthorized"和"403 : Forbidden&q ...
- 【Azure Developer】Azure Automation 自动化账号生成的时候怎么生成连接 与证书 (Connection & Certificate)
Azure Automation :The Azure Automation service provides a highly reliable and scalable workflow exec ...
- 【Azure Developer】Azure Logic App 示例: 解析 Request Body 的 JSON 的表达式? triggerBody()?
问题描述 通过Azure Logic App(逻辑应用)实现无代码的处理JSON数据.但是如何获取Request Body中的一个属性值呢? 例如:如何来获取以下JSON结构中的 ObjectName ...
- 【Azure Developer】在Azure Resource Graph Explorer中查看当前订阅下的所有资源信息列表并导出(如VM的名称,IP地址内网/公网,OS,区域等)
问题描述 通过Azure的Resource Graph Explorer(https://portal.azure.cn/#blade/HubsExtension/ArgQueryBlade),可以查 ...
- 【Azure 环境】Azure Resource Graph Explorer 中实现动态数组数据转换成多行记录模式 - mv-expand
问题描述 想对Azure中全部VM的NSG资源进行收集,如果只是查看一个VM的NSG设定,可以在门户页面中查看表格模式,但是如果想把导出成表格,可以在Azure Resource Graph Expl ...
- 【Azure Developer】使用 Microsoft Authentication Libraries (MSAL) 如何来获取Token呢 (通过用户名和密码方式获取Access Token)
问题描述 在上一篇博文<[Azure Developer]使用 adal4j(Azure Active Directory authentication library for Java)如何来 ...
随机推荐
- 买彩票能中大奖?用Java盘点常见的概率悖论 | 京东云技术团队
引言 <双色球头奖概率与被雷劈中的概率哪个高?> <3人轮流射击,枪法最差的反而更容易活下来?> 让我们用Java来探索ta们! 悖论1:著名的三门问题 规则描述:你正在参加一 ...
- 三十分钟入门基础Go(Java小子版)
作者:京东科技 韩国凯 前言 Go语言定义 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态.强类型.编 ...
- vue写组件时的命名规范
1组件命名驼峰 如myBread.vue(组件) 2引入时,接受同样是驼峰 import MyBread from "@/components/cuscom/myBread.vue" ...
- vue混入mixin
<div id="app"> --{{nick11}} </div> <script> // 全局混入 不需要注册 var m1 = Vue.m ...
- CCFLOW源码解读系列01-----发起流程
1.发起流程 发起流程时主要做了两件事:一是写入业务数据表,二是新建一条审批流程记录. 发起流程的方法 public static Int64 Node_CreateStartNodeWork(str ...
- 5.10 Windows驱动开发:摘除InlineHook内核钩子
在笔者上一篇文章<内核层InlineHook挂钩函数>中介绍了通过替换函数头部代码的方式实现Hook挂钩,对于ARK工具来说实现扫描与摘除InlineHook钩子也是最基本的功能,此类功能 ...
- Xcode常用环境变量与常见使用场景
在Xcode的工程配置中,与路径相关的都是使用环境变量,这样可以避免使用决定路径时项目移植性差的问题. Xcode常用宏 __FILE__ 当前文件所在目录 __DATE__ 编译日期的字符串,格式为 ...
- Kubernetes:kube-scheduler 源码分析
0. 前言 [译] kubernetes:kube-scheduler 调度器代码结构概述 介绍了 kube-scheduler 的代码结构.本文围绕代码结构,从源码角度出发,分析 kube-sche ...
- .NET中使用BootstrapBlazor组件库Table实操篇
前言 Table表格在后台管理应用中使用的是相当频繁的,因此找一个功能齐全的前端框架对于我们而言是非常必要的,因为封装完善的前端框架能够大大提升我们的工作对接效率.今天我们主要来讲解一下在.NET中使 ...
- Kafka-启动时报错: ERROR Fatal error during KafkaServer startup. Prepare to shutdown
一.问题描述 在启动kafka时报错: ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server. ...