Распечатать все имена виртуальных машин и частный IP из подсети

Я хочу перечислить все имена виртуальных машин, которые содержат частный IP-адрес в определенной подсети (например, с именем «sub-a»). Как мне это сделать?

Я надеялся, что этот запрос в Azure Resource Graph Explorer по крайней мере распечатает все непустые частные IP-адреса:

      Resources
| where type =~ 'microsoft.compute/virtualmachines' and isnotempty(properties.privateIPAddress)

1 ответ

Вам нужно посмотреть на сетевые интерфейсы и развернуть свойства, чтобы получить частный IP-адрес. Что-то вроде этого должно помочь. Я изменил один из наших примеров, чтобы использовать частный IP вместо общедоступного.

       Resources
| where type =~ 'microsoft.compute/virtualmachines'
| extend nics=array_length(properties.networkProfile.networkInterfaces)
| mv-expand nic=properties.networkProfile.networkInterfaces
| where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic)
| project vmId = id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), nicId = tostring(nic.id)
| join kind=leftouter (
    Resources
    | where type =~ 'microsoft.network/networkinterfaces'
    | extend ipConfigsCount=array_length(properties.ipConfigurations)
    | extend subnet = tostring(properties.ipConfigurations[0].properties.subnet) 
    | mv-expand ipconfig=properties.ipConfigurations
    | where ipConfigsCount == 1 or ipconfig.properties.primary =~ 'true'
    | project nicId = id, subnet, privateIp = tostring(ipconfig.properties.privateIPAddress))
on nicId
    | order by subnet asc
Другие вопросы по тегам