Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El lenguaje de consulta de Azure Resource Graph admite muchos operadores y funciones. Cada uno funciona en función del lenguaje de consulta de Kusto (KQL). Para información sobre el lenguaje de consulta usado por Resource Graph, comience con el tutorial para KQL.
En este artículo se tratan los componentes de idioma admitidos por Resource Graph:
Tablas de Resource Graph
Resource Graph proporciona varias tablas para los datos que almacena sobre los tipos de recursos de Azure Resource Manager y sus propiedades. Las tablas de Resource Graph se pueden usar con el operador join para obtener propiedades de los tipos de recursos relacionados.
Las tablas de Resource Graph admiten los tipos de join:
| Tabla de Resource Graph | ¿Se puede usar join con otras tablas? |
Description |
|---|---|---|
| AdvisorResources | Yes | Includes resources related to Microsoft.Advisor. |
| AlertsManagementResources | Yes | Includes resources related to Microsoft.AlertsManagement. |
| AppServiceResources | Yes | Includes resources related to Microsoft.Web. |
| AuthorizationResources | Yes | Includes resources related to Microsoft.Authorization. |
| AWSResources | Yes | Includes resources related to Microsoft.AwsConnector. |
| AzureBusinessContinuityResources | Yes | Includes resources related to Microsoft.AzureBusinessContinuity. |
| ChaosResources | Yes | Includes resources related to Microsoft.Chaos. |
| CommunityGalleryResources | Yes | Includes resources related to Microsoft.Compute. |
| ComputeResources | Yes | Incluye recursos relacionados con Microsoft.ComputeVirtual Machine Scale Sets. |
| DesktopVirtualizationResources | Yes | Includes resources related to Microsoft.DesktopVirtualization. |
| DnsResources | Yes | Includes resources related to Microsoft.Network. |
| EdgeOrderResources | Yes | Includes resources related to Microsoft.EdgeOrder. |
| ElasticsanResources | Yes | Includes resources related to Microsoft.ElasticSan. |
| ExtendedLocationResources | Yes | Includes resources related to Microsoft.ExtendedLocation. |
| FeatureResources | Yes | Includes resources related to Microsoft.Features. |
| GuestConfigurationResources | Yes | Includes resources related to Microsoft.GuestConfiguration. |
| HealthResourceChanges | Yes | Includes resources related to Microsoft.Resources. |
| HealthResources | Yes | Includes resources related to Microsoft.ResourceHealth. |
| InsightsResources | Yes | Includes resources related to Microsoft.Insights. |
| IoTSecurityResources | Yes | Includes resources related to Microsoft.IoTSecurity and Microsoft.IoTFirmwareDefense. |
| KubernetesConfigurationResources | Yes | Includes resources related to Microsoft.KubernetesConfiguration. |
| KustoResources | Yes | Includes resources related to Microsoft.Kusto. |
| MaintenanceResources | Yes | Includes resources related to Microsoft.Maintenance. |
| ManagedServicesResources | Yes | Includes resources related to Microsoft.ManagedServices. |
| MigrateResources | Yes | Includes resources related to Microsoft.OffAzure. |
| NetworkResources | Yes | Includes resources related to Microsoft.Network. |
| PatchAssessmentResources | Yes | Includes resources related to Azure Virtual Machines patch assessment Microsoft.Compute and Microsoft.HybridCompute. |
| PatchInstallationResources | Yes | Includes resources related to Azure Virtual Machines patch installation Microsoft.Compute and Microsoft.HybridCompute. |
| PolicyResources | Yes | Includes resources related to Microsoft.PolicyInsights. |
| RecoveryServicesResources | Yes | Includes resources related to Microsoft.DataProtection and Microsoft.RecoveryServices. |
| ResourceChanges | Yes | Includes resources related to Microsoft.Resources. |
| ResourceContainerChanges | Yes | Includes resources related to Microsoft.Resources. |
| ResourceContainers | Yes | Incluye el grupo de administración (Microsoft.Management/managementGroups), la suscripción (Microsoft.Resources/subscriptions) y los tipos de datos del grupo de recursos (Microsoft.Resources/subscriptions/resourcegroups) del grupo de recursos y los datos. |
| Resources | Yes | Tabla predeterminada si una tabla no está definida en la consulta. La mayoría de los tipos de recursos y propiedades de Resource Manager están aquí. |
| SecurityResources | Yes | Includes resources related to Microsoft.Security. |
| ServiceFabricResources | Yes | Includes resources related to Microsoft.ServiceFabric. |
| ServiceHealthResources | Yes | Includes resources related to Microsoft.ResourceHealth/events. |
| SpotResources | Yes | Includes resources related to Microsoft.Compute. |
| SupportResources | Yes | Includes resources related to Microsoft.Support. |
| TagsResources | Yes | Includes resources related to Microsoft.Resources/tagnamespaces. |
Para obtener una lista de tablas que incluye tipos de recursos, vaya a La tabla de Azure Resource Graph y la referencia de tipo de recurso.
Note
Resources es la tabla predeterminada. Al consultar la tabla Resources, no es necesario proporcionar el nombre de la tabla a menos que se usen join o union. Pero la práctica recomendada es incluir siempre la tabla inicial en la consulta.
Para detectar qué tipos de recursos están disponibles en cada tabla, use el Explorador de Resource Graph en el portal. Como alternativa, utilice una consulta como <tableName> | distinct type para obtener una lista de los tipos de recursos que admite la tabla de Resource Graph que existe en su entorno.
En la consulta siguiente se muestra un uso sencillo de join. The query result blends the columns together and any duplicate column names from the joined table, ResourceContainers in this example, are appended with 1. As ResourceContainers table has types for both subscriptions and resource groups, either type might be used to join to the resource from Resources table.
Resources
| join ResourceContainers on subscriptionId
| limit 1
En la consulta siguiente se muestra un uso más complejo de join. En primer lugar, la consulta usa project para obtener los campos Resources para el tipo de recurso almacenes de Azure Key Vault. The next step uses join to merge the results with ResourceContainers where the type is a subscription on a property that is both in the first table's project and the joined table's project. The field rename avoids join adding it as name1 since the property already is projected from Resources. El resultado de la consulta es un solo almacén de claves que muestra su tipo, nombre, ubicación y el grupo de recursos del almacén de claves, junto con el nombre de la suscripción en que se encuentra.
Resources
| where type == 'microsoft.keyvault/vaults'
| project name, type, location, subscriptionId, resourceGroup
| join (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId
| project type, name, location, resourceGroup, SubName
| limit 1
Note
When limiting the join results with project, the property used by join to relate the two tables, subscriptionId in the above example, must be included in project.
Extended properties
As a preview feature, some of the resource types in Resource Graph have more type-related properties available to query beyond the properties provided by Azure Resource Manager. This set of values, known as extended properties, exists on a supported resource type in properties.extended. To show resource types with extended properties, use the following query:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Ejemplo: Obtenga el recuento de máquinas virtuales mediante instanceView.powerState.code:
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Elementos del lenguaje personalizado de Resource Graph
Sintaxis de consulta compartida (versión preliminar)
As a preview feature, a shared query can be accessed directly in a Resource Graph query. Este escenario permite crear consultas estándar como consultas compartidas, así como reutilizarlas. Para llamar a una consulta compartida dentro de una consulta de Resource Graph, use la sintaxis {{shared-query-uri}}. The URI of the shared query is the Resource ID of the shared query on the Settings page for that query. En este ejemplo, el URI de la consulta compartida es /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS.
Este URI apunta a la suscripción, al grupo de recursos y al nombre completo de la consulta compartida a la que se desea hacer referencia en otra consulta. Esta consulta es la misma que la creada en Tutorial: Creación y uso compartido de una consulta.
Note
No se puede guardar como consulta compartida una consulta que haga referencia a una consulta compartida.
Ejemplo 1: Usar solo la consulta compartida:
Los resultados de esta consulta de Resource Graph son los mismos que los de la consulta almacenada en la consulta compartida.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Ejemplo 2: Incluir la consulta compartida como parte de una consulta mayor:
En primer lugar, esta consulta usa la consulta compartida y, a continuación, usa limit para restringir aún más los resultados.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
Elementos del lenguaje KQL admitidos
Resource Graph supports a subset of KQL data types, scalar functions, scalar operators, and aggregation functions. Specific tabular operators are supported by Resource Graph, some of which have different behaviors.
Operadores de nivel superior o tabulares compatibles
Esta es la lista de operadores tabulares KQL admitidos por Resource Graph con ejemplos específicos:
| KQL | Consulta de ejemplo de Resource Graph | Notes |
|---|---|---|
| count | Contador de almacenes de claves | |
| distinct | Mostrar los recursos que contienen almacenamiento | |
| extend | Recuento de máquinas virtuales por tipo de sistema operativo | |
| join | Almacén de claves con el nombre de la suscripción | Join flavors supported: innerunique, inner, leftouter, and fullouter. Límite de tres operaciones join o union (o una combinación de ambas) en una sola consulta, contadas juntas, una de las cuales podría ser una unión entre tablas. If all cross-table join use is between Resource and ResourceContainers, then three cross-table join are allowed. No se permiten las estrategias de combinación personalizadas, como la combinación de difusión. Para qué tablas pueden usar join, vaya a tablas de Resource Graph. |
| limit | Enumerar todas las direcciones IP públicas | Sinónimo de take. Doesn't work with Skip. |
| mvexpand | Operador heredado, use mv-expand en su lugar.
RowLimit max of 2,000. El valor predeterminado es 128. |
|
| mv-expand | Enumeración de Azure Cosmos DB con ubicaciones de escritura concretas |
RowLimit max of 2,000. El valor predeterminado es 128. Límite de 3 mv-expand en una sola consulta. |
| order | Enumeración de recursos ordenados por nombre | Sinónimo de sort |
| parse | Obtención de redes virtuales y subredes de interfaces de red | Es óptimo acceder directamente a las propiedades si existen en lugar de usar parse. |
| project | Enumeración de recursos ordenados por nombre | |
| project-away | Eliminación de columnas de los resultados | |
| sort | Enumeración de recursos ordenados por nombre | Sinónimo de order |
| summarize | Recuento de recursos de Azure | Solo la primera página simplificada |
| take | Enumerar todas las direcciones IP públicas | Sinónimo de limit. Doesn't work with Skip. |
| top | Mostrar las cinco primeras máquinas virtuales por nombre y su tipo de sistema operativo | |
| union | Combinación de los resultados de dos consultas para formar un solo resultado | Tabla única permitida: | union [kind= inner|outer] [withsource=ColumnName] Table. Límite de tres union piernas en una sola consulta. No se permite la resolución aproximada de tablas de segmento union. Might be used within a single table or between the Resources and ResourceContainers tables. |
| where | Mostrar los recursos que contienen almacenamiento |
Hay un límite predeterminado de tres join y tres operadores mv-expand en una sola consulta del SDK de Resource Graph. Puede solicitar un aumento de estos límites para el inquilino en Ayuda y soporte técnico.
To support the Open Query portal experience, Azure Resource Graph Explorer has a higher global limit than Resource Graph SDK.
Note
No se puede hacer referencia a una tabla como tabla correcta más de una vez, lo que excede el límite de 1. Si lo hace, recibirá un error con el código DisallowedMaxNumberOfRemoteTables.
Query scope
The scope of the subscriptions or management groups from which resources are returned by a query defaults to a list of subscriptions based on the context of the authorized user. If a management group or a subscription list isn't defined, the query scope is all resources, and includes Azure Lighthouse delegated resources.
La lista de suscripciones o grupos de administración que se va a consultar se puede definir manualmente para cambiar el ámbito de los resultados. Por ejemplo, la propiedad managementGroups de la API de REST toma el id. del grupo de administración, que es diferente del nombre del grupo de administración. Cuando se especifica managementGroups, se incluyen los recursos de las primeras 10000 suscripciones de la jerarquía de grupos de administración especificada.
managementGroups no se puede usar al mismo tiempo que subscriptions.
Ejemplo: Consulte todos los recursos de la jerarquía del grupo de administración denominado My Management Group con el identificador myMG.
URI DE LA API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01Request Body
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
El parámetro AuthorizationScopeFilter permite enumerar las asignaciones de Azure Policy y las asignaciones de roles de control de acceso basado en rol (RBAC de Azure) en la tabla AuthorizationResources que se heredan de ámbitos superiores. El parámetro AuthorizationScopeFilter acepta los siguientes valores para las tablas PolicyResources y AuthorizationResources:
- AtScopeAndBelow (default if not specified): Returns assignments for the given scope and all child scopes.
- AtScopeAndAbove: Returns assignments for the given scope and all parent scopes, but not child scopes.
- AtScopeAboveAndBelow: Returns assignments for the given scope, all parent scopes, and all child scopes.
- AtScopeExact: Returns assignments only for the given scope; no parent or child scopes are included.
Note
To use the AuthorizationScopeFilter parameter, be sure to use the 2021-06-01-preview or later API version in your requests.
Example: Get all policy assignments at the myMG management group and Tenant Root (parent) scopes.
URI DE LA API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewEjemplo de cuerpo de la solicitud
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Example: Get all policy assignments at the mySubscriptionId subscription, management group, and Tenant Root scopes.
URI DE LA API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewEjemplo de cuerpo de la solicitud
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Escape characters
Algunos nombres de propiedad, como los que incluyen . o $, debe encapsularse o escapar en la consulta para que se interprete correctamente; de lo contrario, no proporcionan los resultados previstos.
Punto (
.): ajuste el nombre de la propiedad['propertyname.withaperiod']mediante corchetes.Example query that wraps the property odata.type:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']Signo de dólar (
$): escape el carácter en el nombre de la propiedad. El carácter de escape usado depende del shell que ejecuta Resource Graph.Bash: Use a backslash (
\) as the escape character.Example query that escapes the property $type in Bash:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$typecmd: Don't escape the dollar sign (
$) character.PowerShell: Use a backtick (
`) as the escape character.Example query that escapes the property $type in PowerShell:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Next steps
- Azure Resource Graph query language Starter queries and Advanced queries.
- Obtenga más información sobre cómo explorar los recursos de Azure.