2

我需要遍历 Azure Resource Graph Explorer ( https://preview.portal.azure.com/ ) 中的托管数据磁盘。我的查询在下面,但它返回 JSON 数组,我需要提取磁盘名称和正在使用的存储帐户类型(示例 JSON 返回如下)。所以我想在屏幕上看到按机器名称、磁盘名称和存储帐户类型分组。我当前的查询如下,但由于 JSON 的返回,它显然不起作用

where type =~ 'Microsoft.Compute/virtualmachines' |
extend disks = properties.storageProfile.dataDisks |
project name, disks

相同的 JSON 输出

[
    {
        "name": "COMP02_DDisk1",
        "createOption": "Attach",
        "diskSizeGB": 400,
        "managedDisk": {
            "id": "/subscriptions/5f5c5be9-77d4db790171/resourceGroups/BRAZILSOUTHDB/providers/Microsoft.Compute/disks/COMP02_DDisk1",
            "storageAccountType": "Premium_LRS"
        },
        "caching": "None",
        "toBeDetached": false,
        "lun": 0,
        "writeAcceleratorEnabled": false
    },
    {
        "name": "COMP02_DDisk2",
        "createOption": "Attach",
        "diskSizeGB": 400,
        "managedDisk": {
            "id": "/subscriptions/5f5c5be9-77d4db790171/resourceGroups/BRAZILSOUTHDB/providers/Microsoft.Compute/disks/COMP02_DDisk2",
            "storageAccountType": "Premium_LRS"
        },
        "caching": "None",
        "toBeDetached": false,
        "lun": 1,
        "writeAcceleratorEnabled": false
    }
]

在此处输入图像描述

4

2 回答 2

6

mv-expand在这种情况下,使用扩展数组然后为每个记录应用动态属性访问器通常很有帮助。

https://docs.microsoft.com/en-us/azure/kusto/query/mvexpandoperator

例子:

print d = dynamic([
    {
        "name": "COMP02_DDisk1",
        "createOption": "Attach",
        "diskSizeGB": 400,
        "managedDisk": {
            "id": "/subscriptions/5f5c5be9-77d4db790171/resourceGroups/BRAZILSOUTHDB/providers/Microsoft.Compute/disks/COMP02_DDisk1",
            "storageAccountType": "Premium_LRS"
        },
        "caching": "None",
        "toBeDetached": false,
        "lun": 0,
        "writeAcceleratorEnabled": false
    },
    {
        "name": "COMP02_DDisk2",
        "createOption": "Attach",
        "diskSizeGB": 400,
        "managedDisk": {
            "id": "/subscriptions/5f5c5be9-77d4db790171/resourceGroups/BRAZILSOUTHDB/providers/Microsoft.Compute/disks/COMP02_DDisk2",
            "storageAccountType": "Premium_LRS"
        },
        "caching": "None",
        "toBeDetached": false,
        "lun": 1,
        "writeAcceleratorEnabled": false
    }
])
| mv-expand d
| project d.name, d.managedDisk.storageAccountType

这将输出:

| d_name        | d_managedDisk_storageAccountType |
|---------------|----------------------------------|
| COMP02_DDisk1 | Premium_LRS                      |
| COMP02_DDisk2 | Premium_LRS                      |
于 2019-05-16T01:17:31.200 回答
1

希望你做得很好。

您也可以尝试这种方式,首先我从整个集合中找到 networksecuritygroups,然后过滤defaultSecurityRules,这又是一个数组。在局部变量规则中使用mvexpand收集它后,您应该能够在应用后获取所需的内容。

 where type =~ "microsoft.network/networksecuritygroups"
| mvexpand rules = properties.defaultSecurityRules
| where rules.properties.destinationAddressPrefix =~ "*"

您也可以参考下面给出的链接,希望它也对您有所帮助。

于 2020-02-19T09:27:15.600 回答