Exemplos de consultas iniciais do Resource GraphStarter Resource Graph query samples

A primeira etapa para consultas de reconhecimento com o Microsoft Azure Resource Graph é uma compreensão básica da Linguagem de Consulta.The first step to understanding queries with Azure Resource Graph is a basic understanding of the Query Language. Se você ainda não estiver familiarizado com o KQL (Kusto Query Language), é recomendável examinar o tutorial do KQL para entender como compor solicitações para os recursos que você está procurando.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.

Vamos percorrer as seguintes consultas iniciais:We'll walk through the following starter queries:

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Suporte ao idiomaLanguage support

A CLI do Azure (por meio de uma extensão) e o Azure PowerShell (por meio de um módulo) suportam o Gráfico de Recursos do Azure.Azure CLI (through an extension) and Azure PowerShell (through a module) support Azure Resource Graph. Antes de executar qualquer uma das consultas a seguir, verifique se seu ambiente está preparado.Before running any of the following queries, check that your environment is ready. Veja CLI do Azure e Azure PowerShell para obter as etapas instalar e validar o ambiente shell de escolha.See Azure CLI and Azure PowerShell for steps to install and validate your shell environment of choice.

Recursos do Count AzureCount Azure resources

Essa consulta retorna o número de recursos do Azure que existem nas assinaturas que você tem acesso.This query returns number of Azure resources that exist in the subscriptions that you have access to. Também é uma boa consulta para validar se o shell de escolha tem os componentes apropriados do Azure Resource Graph instalados e em funcionamento.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()"

Contagem de recursos do cofre de chavesCount key vault resources

Essa consulta usa count em vez de summarize para contar o número de registros retornados.This query uses count instead of summarize to count the number of records returned. Somente os cofres de chaves são incluídos na contagem.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"

Listar recursos classificados por nomeList resources sorted by name

Essa consulta retorna todo tipo de recurso, mas apenas as propriedades name, type e location.This query returns any type of resource, but only the name, type, and location properties. Ele usa order by para classificar as propriedades pela propriedade name em ordem crescente (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"

Mostrar todas as máquinas virtuais, ordenadas por nome em ordem decrescenteShow all virtual machines ordered by name in descending order

Para listar somente as máquinas virtuais (que são do tipo Microsoft.Compute/virtualMachines), podemos fazer a correspondência com a propriedade type nos resultados.To list only virtual machines (which are type Microsoft.Compute/virtualMachines), we can match the property type in the results. Semelhante à consulta anterior, desc alterações a order by devem estar em ordem decrescente.Similar to the previous query, desc changes the order by to be descending. O =~ no tipo de correspondência informa ao Microsoft Azure Active Directory Graph para diferenciar maiusculas e minúsculas.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"

Mostrar as primeiras cinco máquinas virtuais por nome e tipo do sistema operacionalShow first five virtual machines by name and their OS type

Essa consulta usará top para recuperar apenas os cinco registros correspondentes que são ordenados pelo nome.This query will use top to only retrieve five matching records that are ordered by name. O tipo de recurso do Azure é Microsoft.Compute/virtualMachines.The type of the Azure resource is Microsoft.Compute/virtualMachines. project informa quais propriedades do Gráfico de Recurso do Azure incluir.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"

Contagem de máquinas virtuais por tipo de sistema operacionalCount virtual machines by OS type

Aproveitando a consulta anterior, estamos ainda limitando pelos recursos do Azure do tipo Microsoft.Compute/virtualMachines, mas não limitando o número de registros retornados.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. Em vez disso, usamos summarize e count() para definir como agrupar e agregar os valores de propriedade, que neste exemplo é 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. Para obter um exemplo da aparência dessa cadeia de caracteres no objeto completo, consulte Explorar recursos - descoberta de máquina virtual.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)"

Outra maneira de escrever a mesma consulta é extend uma propriedade e dê a ele um nome temporário para uso dentro da consulta, nesse caso sistema operacional.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. Sistema Operacional em seguida, é usado pelo summarize e count() do exemplo anterior.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)"

Observação

Lembre-se que, embora =~ permite o uso de correspondência, diferencia maiusculas de minúsculas de propriedades (como properties.storageProfile.osDisk.osType) na consulta exigem que o caso esteja correto.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. Se a propriedade for o caso incorreto, um valor nulo ou incorreto será retornado, e o agrupamento ou resumo ficará incorreto.If the property is the incorrect case, a null or incorrect value is returned and the grouping or summarization would be incorrect.

Mostrar recursos que contêm o armazenamentoShow resources that contain storage

Em vez de definir explicitamente o tipo a ser correspondido, este exemplo de consulta encontrará qualquer recurso do Azure que contains a palavra armazenamento.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"

Listar todos os endereços de IPList all public IP addresses

Semelhante à consulta anterior, encontre tudo o que seja um tipo que contenha a palavra publicIPAddresses.Similar to the previous query, find everything that is a type with the word publicIPAddresses. Essa consulta expande esse padrão para incluir resultados em que properties.ipAddress isnotempty, retornar somente properties.ipAddress e limit os resultados aos principaisThis 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. Você talvez precise escapar as cotas dependendo do seu shell escolhido.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"

Recursos de contagem que têm endereços IP configurados por assinaturaCount resources that have IP addresses configured by subscription

Usando a consulta de exemplo anterior e adicionando summarize e count(), obtemos uma lista por assinatura de recursos com endereços IP configurados.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"

Listar de recursos com um valor de marca específicaList resources with a specific tag value

É possível limitar os resultados por propriedades que não seja o tipo de recurso do Azure, como uma marca.We can limit the results by properties other than the Azure resource type, such as a tag. Neste exemplo, estamos filtrando por recursos do Azure com o nome de marca de Ambiente que tenha um valor de Interno.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"

Para fornecer também quais marcas o recurso tem e seus valores, adicione a propriedade tags à palavra-chave 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"

Listar todas as contas de armazenamento com o valor de marca específicaList all storage accounts with specific tag value

Combine a funcionalidade de filtro do exemplo anterior e filtre o tipo de recurso do Azure pela propriedade type.Combine the filter functionality of the previous example and filter Azure resource type by type property. Essa consulta também limita a nossa pesquisa por tipos específicos de recursos do Azure com um valor e nome de marca específicos.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'"

Observação

Este exemplo usa == para a correspondência em vez do =~ condicional.This example uses == for matching instead of the =~ conditional. == é uma correspondência que diferencia maiusculas de minúsculas.== is a case sensitive match.

Listar todas as marcas e os respectivos valoresList all tags and their values

Essa consulta lista as marcas em grupos de gerenciamento, assinaturas e recursos, junto com os respectivos valores.This query lists tags on management groups, subscriptions, and resources along with their values. A consulta primeiro limita os recursos em que as marcas isnotempty(), limita os campos incluídos incluindo apenas marcas no project e mvexpand e extend para obter os dados emparelhados do recipiente de propriedades.The query first limits to resources where tags isnotempty(), limits the included fields by only including tags in the project, and mvexpand and extend to get the paired data from the property bag. Depois, ela usa union para combinar os resultados de ResourceContainers com os mesmos resultados de Resources, proporcionando ampla cobertura para quais marcas são buscadas.It then uses union to combine the results from ResourceContainers to the same results from Resources, giving broad coverage to which tags are fetched. Por fim, ela limita os resultados aos dados emparelhados distinct e exclui as marcas ocultas do sistema.Last, it limits the results to distinct paired data and excludes system-hidden tags.

ResourceContainers 
| where isnotempty(tags)
| project tags
| mvexpand tags
| extend tagKey = tostring(bag_keys(tags)[0])
| extend tagValue = tostring(tags[tagKey])
| union (
    resources
    | where isnotempty(tags)
    | project tags
    | mvexpand tags
    | extend tagKey = tostring(bag_keys(tags)[0])
    | extend tagValue = tostring(tags[tagKey])
)
| distinct tagKey, tagValue
| where tagKey !startswith "hidden-"
az graph query -q "ResourceContainers | where isnotempty(tags) | project tags | mvexpand tags | extend tagKey = tostring(bag_keys(tags)[0]) | extend tagValue = tostring(tags[tagKey]) | union (resources | where notempty(tags) | project tags | mvexpand tags | extend tagKey = tostring(bag_keys(tags)[0]) | extend tagValue = tostring(tags[tagKey]) ) | distinct tagKey, tagValue | where tagKey !startswith "hidden-""

Mostrar grupos de segurança de rede não associadosShow unassociated network security groups

Essa consulta retorna NSGs (grupos de segurança de rede) que não estão associados a uma sub-rede ou adaptador de rede.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"

Obter resumo de economia de custos do Assistente do AzureGet cost savings summary from Azure Advisor

Essa consulta resume a economia de custos de cada recomendação do Assistente do Azure.This query summarizes the cost savings of each Azure Advisor recommendation.

advisorresources
| where type == 'microsoft.advisor/recommendations'
| where properties.category == 'Cost'
| extend
    resources = tostring(properties.resourceMetadata.resourceId),
    savings = todouble(properties.extendedProperties.savingsAmount),
    solution = tostring(properties.shortDescription.solution),
    currency = tostring(properties.extendedProperties.savingsCurrency)
| summarize
    dcount(resources), 
    bin(sum(savings), 0.01)
    by solution, currency
| project solution, dcount_resources, sum_savings, currency
| order by sum_savings desc
az graph query -q "advisorresources | where type == 'microsoft.advisor/recommendations' | where properties.category == 'Cost' | extend resources = tostring(properties.resourceMetadata.resourceId), savings = todouble(properties.extendedProperties.savingsAmount), solution = tostring(properties.shortDescription.solution), currency = tostring(properties.extendedProperties.savingsCurrency) | summarize dcount(resources), bin(sum(savings), 0.01) by solution, currency | project solution, dcount_resources, sum_savings, currency | order by sum_savings desc"

Contar computadores no escopo de políticas de Configuração de ConvidadoCount machines in scope of Guest Configuration policies

Exibe a contagem de máquinas virtuais do Azure e servidores conectados ao Arc no escopo para atribuições da Configuração de Convidado do Azure Policy.Displays the count of Azure virtual machines and Arc connected servers in scope for Azure Policy Guest Configuration assignments.

GuestConfigurationResources
| extend vmid = split(properties.targetResourceId,'/')
| mvexpand properties.latestAssignmentReport.resources
| where properties_latestAssignmentReport_resources.resourceId != 'Invalid assignment package.'
| project machine = tostring(vmid[(-1)]),
    type = tostring(vmid[(-3)])
| distinct machine, type
| summarize count() by type
az graph query -q "GuestConfigurationResources | extend vmid = split(properties.targetResourceId,'/') | mvexpand properties.latestAssignmentReport.resources | where properties_latestAssignmentReport_resources.resourceId != 'Invalid assignment package.' | project machine = tostring(vmid[(-1)]), type = tostring(vmid[(-3)]) | distinct machine, type | summarize count() by type"

Próximas etapasNext steps