Примеры запросов к Resource Graph для начинающихStarter Resource Graph query samples

Первым шагом на пути к пониманию запросов к Azure Resource Graph является общее понимание языка запросов.The first step to understanding queries with Azure Resource Graph is a basic understanding of the Query Language. Если вы еще не знакомы с языком запросов Kusto (KQL), советуем просмотреть учебник по KQL, чтобы понять, как составлять запросы к ресурсам, которые вы ищете.If you aren't already familiar with Kusto Query Language (KQL), it's recommended to review the tutorial for KQL to understand how to compose requests for the resources you're looking for.

Мы рассмотрим следующие запросы для начинающих:We'll walk through the following starter queries:

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.If you don't have an Azure subscription, create a free account before you begin.

Поддержка языковLanguage support

Azure CLI (с помощью расширения) и Azure PowerShell (с помощью модуля) поддерживают Azure Resource Graph.Azure CLI (through an extension) and Azure PowerShell (through a module) support Azure Resource Graph. Перед выполнением любого из следующих запросов убедитесь, что среда готова.Before running any of the following queries, check that your environment is ready. В разделах об Azure CLI и Azure PowerShell приведены инструкции по установке и проверке выбранной вами среды оболочки.See Azure CLI and Azure PowerShell for steps to install and validate your shell environment of choice.

Подсчет ресурсов AzureCount Azure resources

Этот запрос возвращает количество ресурсов Azure в доступных вам подписках.This query returns number of Azure resources that exist in the subscriptions that you have access to. Этот запрос также удобно использовать, чтобы проверить, установлены ли в выбранной оболочке соответствующие компоненты Azure Resource Graph и работают ли они.It's also a good query to validate your shell of choice has the appropriate Azure Resource Graph components installed and in working order.

Resources
| summarize count()
az graph query -q "Resources | summarize count()"

Подсчет ресурсов хранилища ключейCount key vault resources

Для подсчета количества возвращаемых записей в этом запросе используется count вместо summarize.This query uses count instead of summarize to count the number of records returned. В подсчет включаются только хранилища ключей.Only key vaults are included in the count.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| count
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | count"

Вывод списка ресурсов, отсортированных по имениList resources sorted by name

Этот запрос возвращает любой тип ресурса, но только свойства name, type и location.This query returns any type of resource, but only the name, type, and location properties. Он использует выражение order by, чтобы сортировать свойства по свойству name в порядке возрастания (asc).It uses order by to sort the properties by the name property in ascending (asc) order.

Resources
| project name, type, location
| order by name asc
az graph query -q "Resources | project name, type, location | order by name asc"

Отображение всех виртуальных машин, упорядоченных по имени в порядке убыванияShow all virtual machines ordered by name in descending order

Чтобы вывести только список виртуальных машин (относящихся к типу Microsoft.Compute/virtualMachines), в результатах можно применить сопоставление по свойству type.To list only virtual machines (which are type Microsoft.Compute/virtualMachines), we can match the property type in the results. Аналогично предыдущему запросу, desc изменяет order by для сортировки по убыванию.Similar to the previous query, desc changes the order by to be descending. =~ в сопоставлении типа указывает Resource Graph не учитывать регистр.The =~ in the type match tells Resource Graph to be case insensitive.

Resources
| project name, location, type
| where type =~ 'Microsoft.Compute/virtualMachines'
| order by name desc
az graph query -q "Resources | project name, location, type| where type =~ 'Microsoft.Compute/virtualMachines' | order by name desc"

Отображение первых пяти виртуальных машин по имени и типу ОСShow first five virtual machines by name and their OS type

Этот запрос будет использовать top для извлечения только пяти соответствующих записей, упорядоченных по имени.This query will use top to only retrieve five matching records that are ordered by name. Типом ресурса Azure является Microsoft.Compute/virtualMachines.The type of the Azure resource is Microsoft.Compute/virtualMachines. project указывает Azure Resource Graph, какие свойства следует включить.project tells Azure Resource Graph which properties to include.

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| project name, properties.storageProfile.osDisk.osType
| top 5 by name desc
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project name, properties.storageProfile.osDisk.osType | top 5 by name desc"

Подсчет виртуальных машин по типу ОСCount virtual machines by OS type

Основываясь на предыдущем запросе, мы по-прежнему ограничиваем результаты типом ресурса Azure Microsoft.Compute/virtualMachines, но больше не ограничиваем количество возвращаемых записей.Building on the previous query, we're still limiting by Azure resources of type Microsoft.Compute/virtualMachines, but are no longer limiting the number of records returned. Вместо этого мы использовали summarize и count(), чтобы определить способ группирования и объединения значений по свойству (properties.storageProfile.osDisk.osType в этом примере).Instead, we used summarize and count() to define how to group and aggregate the values by property, which in this example is properties.storageProfile.osDisk.osType. Чтобы получить представление о том, как эта строка выглядит в полном объекте, ознакомьтесь с просмотром ресурсов и обнаружением виртуальных машин.For an example of how this string looks in the full object, see explore resources - virtual machine discovery.

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| summarize count() by tostring(properties.storageProfile.osDisk.osType)
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)"

Этот запрос можно составить по-другому. Можно расширить (extend) свойство и присвоить ему временное имя для использования в запросе, в этом случае — os.A different way to write the same query is to extend a property and give it a temporary name for use within the query, in this case os. Затем os используется для summarize и count(), как в предыдущем примере.os is then used by summarize and count() as in the previous example.

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| extend os = properties.storageProfile.osDisk.osType
| summarize count() by tostring(os)
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | extend os = properties.storageProfile.osDisk.osType | summarize count() by tostring(os)"

Примечание

Имейте в виду, что, хотя =~ позволяет сопоставление без учета регистра, использование свойств (таких как properties.storageProfile.osDisk.osType) в запросе требует соблюдения регистра.Be aware that while =~ allows case insensitive matching, use of properties (such as properties.storageProfile.osDisk.osType) in the query require the case to be correct. Если свойство указано в неправильном регистре, возвращается значение NULL или неверное значение. Группирование или сведение данных будет выполняться неправильно.If the property is the incorrect case, a null or incorrect value is returned and the grouping or summarization would be incorrect.

Отображение ресурсов, которые содержит хранилищеShow resources that contain storage

Вместо явного сопоставления определенного типа этот пример запроса будет искать все ресурсы Azure, содержащие (contains) слово storage.Instead of explicitly defining the type to match, this example query will find any Azure resource that contains the word storage.

Resources
| where type contains 'storage' | distinct type
az graph query -q "Resources | where type contains 'storage' | distinct type"

Вывод списка общедоступных IP-адресовList all public IP addresses

Аналогично предыдущему примеру этот запрос ищет все ресурсы, тип которых содержит слово publicIPAddresses.Similar to the previous query, find everything that is a type with the word publicIPAddresses. Этот запрос расширяет данный шаблон, чтобы включить в результаты только ресурсы, у которых properties.ipAddress имеет значение isnotempty, и возвращать только ресурсы с действительным значением properties.ipAddress. Кроме того, число результатов ограничено (limit) первымиThis query expands on that pattern to only include results where properties.ipAddress isnotempty, to only return the properties.ipAddress, and to limit the results by the top 100. В зависимости от выбранной оболочки может потребоваться экранировать кавычки.You may need to escape the quotes depending on your chosen shell.

Resources
| where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress)
| project properties.ipAddress
| limit 100
az graph query -q "Resources | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | project properties.ipAddress | limit 100"

Подсчет ресурсов с IP-адресами, настроенными посредством подпискиCount resources that have IP addresses configured by subscription

Используя предыдущий пример запроса и добавив summarize и count(), мы можем получить список ресурсов с настроенными IP-адресами для подписки.Using the previous example query and adding summarize and count(), we can get a list by subscription of resources with configured IP addresses.

Resources
| where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress)
| summarize count () by subscriptionId
az graph query -q "Resources | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | summarize count () by subscriptionId"

Вывод списка ресурсов с определенным значением тегаList resources with a specific tag value

Мы можем ограничить результаты не только по типу ресурса Azure, а, например, по тегу.We can limit the results by properties other than the Azure resource type, such as a tag. В этом примере мы применяем фильтр для получения ресурсов Azure с тегом Environment со значением Internal.In this example, we're filtering for Azure resources with a tag name of Environment that have a value of Internal.

Resources
| where tags.environment=~'internal'
| project name
az graph query -q "Resources | where tags.environment=~'internal' | project name"

Чтобы указать теги ресурсов и их значения, добавьте свойство tags для ключевого слова project.To also provide what tags the resource has and their values, add the property tags to the project keyword.

Resources
| where tags.environment=~'internal'
| project name, tags
az graph query -q "Resources | where tags.environment=~'internal' | project name, tags"

Вывод списка всех учетных записей хранения с определенным значением тегаList all storage accounts with specific tag value

Объедините функции фильтра в предыдущем примере и фильтрацию по типу ресурса Azure с помощью свойства type.Combine the filter functionality of the previous example and filter Azure resource type by type property. Этот запрос также ограничивает поиск определенных типов ресурсов Azure за счет использования конкретного имени и значения тега.This query also limits our search for specific types of Azure resources with a specific tag name and value.

Resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| where tags['tag with a space']=='Custom value'
az graph query -q "Resources | where type =~ 'Microsoft.Storage/storageAccounts' | where tags['tag with a space']=='Custom value'"

Примечание

В этом примере для сопоставления используется условный оператор == вместо =~.This example uses == for matching instead of the =~ conditional. При использовании == учитывается регистр.== is a case sensitive match.

Отображение псевдонимов для ресурса виртуальной машиныShow aliases for a virtual machine resource

Псевдонимы Политики Azure используются Политикой Azure для управления соответствием ресурсов.Azure Policy aliases are used by Azure Policy to manage resource compliance. Azure Resource Graph может возвращать псевдонимы типа ресурса.Azure Resource Graph can return the aliases of a resource type. Эти значения можно использовать для сравнения с текущим значением псевдонимов при создании пользовательского определения политики.These values are useful for comparing the current value of aliases when creating a custom policy definition. Массив псевдонимов не предоставляется по умолчанию в результатах запроса.The aliases array isn't provided by default in the results of a query. Используйте project aliases, чтобы явным способом добавить его к результатам.Use project aliases to explicitly add it to the results.

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| limit 1
| project aliases
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | limit 1 | project aliases"

Отображение уникальных значений для конкретного псевдонимаShow distinct values for a specific alias

Отображение значения псевдонимов на один ресурс является полезным, но оно не показывает значение true при использовании Azure Resource Graph для запроса между подписками.Seeing the value of aliases on a single resource is helpful, but it doesn't show the true value of using Azure Resource Graph to query across subscriptions. В этом примере рассматриваются все значения конкретного псевдонима и возвращаются уникальные значения.This example looks at all values of a specific alias and returns the distinct values.

Resources
| where type=~'Microsoft.Compute/virtualMachines'
| extend alias = aliases['Microsoft.Compute/virtualMachines/storageProfile.osDisk.managedDisk.storageAccountType']
| distinct tostring(alias)
az graph query -q "Resources | where type=~'Microsoft.Compute/virtualMachines' | extend alias = aliases['Microsoft.Compute/virtualMachines/storageProfile.osDisk.managedDisk.storageAccountType'] | distinct tostring(alias)"

Отображение несвязанных групп безопасности сетиShow unassociated network security groups

Этот запрос возвращает группы безопасности сети (NSG), которые не связаны с сетевым интерфейсом или подсетью.This query returns Network Security Groups (NSGs) that aren't associated to a network interface or subnet.

Resources
| where type =~ "microsoft.network/networksecuritygroups" and isnull(properties.networkInterfaces) and isnull(properties.subnets)
| project name, resourceGroup
| sort by name asc
az graph query -q "Resources | where type =~ 'microsoft.network/networksecuritygroups' and isnull(properties.networkInterfaces) and isnull(properties.subnets) | project name, resourceGroup | sort by name asc"

Дополнительная информацияNext steps