Sdílet prostřednictvím


Ukázkové dotazy azure Resource Graphu pro Azure Virtual Machines

Tato stránka je kolekce ukázkových dotazů Azure Resource Graphu pro Azure Virtual Machines.

Vzorové dotazy

Počet dokončených instalací aktualizací operačního systému

Vrátí seznam stavu spuštění instalace aktualizací operačního systému pro vaše počítače za posledních 7 dnů.

PatchAssessmentResources
| where type !has 'softwarepatches'
| extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4))
| extend prop = parse_json(properties)
| extend lTime = todatetime(prop.lastModifiedDateTime), OS = tostring(prop.osType), installedPatchCount = tostring(prop.installedPatchCount), failedPatchCount = tostring(prop.failedPatchCount), pendingPatchCount = tostring(prop.pendingPatchCount), excludedPatchCount = tostring(prop.excludedPatchCount), notSelectedPatchCount = tostring(prop.notSelectedPatchCount)
| where lTime > ago(7d)
| project lTime, RunID=name,machineName, rgName, resourceType, OS, installedPatchCount, failedPatchCount, pendingPatchCount, excludedPatchCount, notSelectedPatchCount
az graph query -q "PatchAssessmentResources | where type !has 'softwarepatches' | extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4)) | extend prop = parse_json(properties) | extend lTime = todatetime(prop.lastModifiedDateTime), OS = tostring(prop.osType), installedPatchCount = tostring(prop.installedPatchCount), failedPatchCount = tostring(prop.failedPatchCount), pendingPatchCount = tostring(prop.pendingPatchCount), excludedPatchCount = tostring(prop.excludedPatchCount), notSelectedPatchCount = tostring(prop.notSelectedPatchCount) | where lTime > ago(7d) | project lTime, RunID=name,machineName, rgName, resourceType, OS, installedPatchCount, failedPatchCount, pendingPatchCount, excludedPatchCount, notSelectedPatchCount"

Počet virtuálních počítačů podle stavu dostupnosti a ID předplatného

Vrátí počet virtuálních počítačů (typu Microsoft.Compute/virtualMachines) agregovaných podle jejich stavu dostupnosti v rámci každého z vašich předplatných.

HealthResources
| where type =~ 'microsoft.resourcehealth/availabilitystatuses'
| summarize count() by subscriptionId, AvailabilityState = tostring(properties.availabilityState)
az graph query -q "HealthResources | where type =~ 'microsoft.resourcehealth/availabilitystatuses' | summarize count() by subscriptionId, AvailabilityState = tostring(properties.availabilityState)"

Počet virtuálních počítačů podle stavu napájení

Vrátí počet virtuálních počítačů (typu Microsoft.Compute/virtualMachines) zařazených do kategorií podle jejich stavu napájení. Další informace o stavech napájení najdete v tématu Přehled stavů napájení.

Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by PowerState = tostring(properties.extended.instanceView.powerState.code)
az graph query -q "Resources | where type == 'microsoft.compute/virtualmachines' | summarize count() by PowerState = tostring(properties.extended.instanceView.powerState.code)"

Počet virtuálních počítačů podle typu operačního systému

Vycházíme z předchozího dotazu a stále omezujeme prostředky Azure na typ Microsoft.Compute/virtualMachines, ale už neomezujeme počet vrácených záznamů. Místo toho jsme použili summarize a count() k definování, jak seskupit a agregovat hodnoty podle vlastností, což je v tomto příkladu properties.storageProfile.osDisk.osType. Příklad toho, jak tento řetězec vypadá v úplném objektu, najdete v části zjišťování prostředků – objevování virtuálních počítačů.

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)"

Počet virtuálních počítačů podle typu operačního systému s rozšířením

Jiný způsob, jak napsat dotaz Count virtual machines by OS type (Počet virtuálních počítačů podle typu operačního systému), je vlastnost extend a dát jí dočasný název pro použití v rámci dotazu, v tomto případě os. os je pak používán summarize a count() jako v odkazovaném příkladu.

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)"

Získání všech nových upozornění z posledních 30 dnů

Tento dotaz obsahuje seznam všech nových upozornění uživatele za posledních 30 dnů.

iotsecurityresources
| where type == 'microsoft.iotsecurity/locations/devicegroups/alerts'
| where todatetime(properties.startTimeUtc) > ago(30d) and properties.status == 'New'
az graph query -q "iotsecurityresources | where type == 'microsoft.iotsecurity/locations/devicegroups/alerts' | where todatetime(properties.startTimeUtc) > ago(30d) and properties.status == 'New'"

Získání kapacity a velikosti škálovací sady virtuálních počítačů

Tento dotaz hledá prostředky škálovací sady virtuálních počítačů a získá různé podrobnosti, včetně velikosti virtuálních počítačů a kapacity škálovací sady. Dotaz pomocí funkce toint() přetypuje kapacitu na číslo, aby bylo možné ji řadit. Nakonec se sloupce přejmenují na vlastní pojmenované vlastnosti.

Resources
| where type=~ 'microsoft.compute/virtualmachinescalesets'
| where name contains 'contoso'
| project subscriptionId, name, location, resourceGroup, Capacity = toint(sku.capacity), Tier = sku.name
| order by Capacity desc
az graph query -q "Resources | where type=~ 'microsoft.compute/virtualmachinescalesets' | where name contains 'contoso' | project subscriptionId, name, location, resourceGroup, Capacity = toint(sku.capacity), Tier = sku.name | order by Capacity desc"

Zobrazení seznamu všech rozšíření nainstalovaných na virtuálním počítači

Nejprve tento dotaz používá extend typ prostředku virtuálních počítačů k získání ID velkými písmeny (toupper()), získání názvu a typu operačního systému a získání velikosti virtuálního počítače. Získání ID prostředku velkými písmeny je dobrým způsobem, jak se připravit na připojení k jiné vlastnosti. Potom dotaz použije join kind leftouter k získání rozšíření virtuálních počítačů tak, že odpovídá velkým písmenům substring ID rozšíření. Část ID před /extensions/\<ExtensionName\> je stejný formát jako ID virtuálních počítačů, takže tuto vlastnost použijeme pro join. summarize se pak použije s make_list názvem rozšíření virtuálního počítače ke kombinování názvu každé rozšíření, kde ID, OSName, OSType a VMSize jsou stejné do jedné vlastnosti pole. Nakonec jsme order by malými písmeny OSName s asc. Ve výchozím nastavení order by je sestupné.

Resources
| where type == 'microsoft.compute/virtualmachines'
| extend
  JoinID = toupper(id),
  OSName = tostring(properties.osProfile.computerName),
  OSType = tostring(properties.storageProfile.osDisk.osType),
  VMSize = tostring(properties.hardwareProfile.vmSize)
| join kind=leftouter(
  Resources
  | where type == 'microsoft.compute/virtualmachines/extensions'
  | extend
    VMId = toupper(substring(id, 0, indexof(id, '/extensions'))),
    ExtensionName = name
) on $left.JoinID == $right.VMId
| summarize Extensions = make_list(ExtensionName) by id, OSName, OSType, VMSize
| order by tolower(OSName) asc
az graph query -q "Resources | where type == 'microsoft.compute/virtualmachines' | extend JoinID = toupper(id), OSName = tostring(properties.osProfile.computerName), OSType = tostring(properties.storageProfile.osDisk.osType), VMSize = tostring(properties.hardwareProfile.vmSize) | join kind=leftouter( Resources | where type == 'microsoft.compute/virtualmachines/extensions' | extend  VMId = toupper(substring(id, 0, indexof(id, '/extensions'))),  ExtensionName = name ) on \$left.JoinID == \$right.VMId | summarize Extensions = make_list(ExtensionName) by id, OSName, OSType, VMSize | order by tolower(OSName) asc"

Výpis dostupných aktualizací operačního systému pro všechny počítače seskupené podle kategorie aktualizací

Vrátí seznam nevyřízených operačních systému pro vaše počítače.

PatchAssessmentResources
| where type !has 'softwarepatches'
| extend prop = parse_json(properties)
| extend lastTime = properties.lastModifiedDateTime
| extend updateRollupCount = prop.availablePatchCountByClassification.updateRollup, featurePackCount = prop.availablePatchCountByClassification.featurePack, servicePackCount = prop.availablePatchCountByClassification.servicePack, definitionCount = prop.availablePatchCountByClassification.definition, securityCount = prop.availablePatchCountByClassification.security, criticalCount = prop.availablePatchCountByClassification.critical, updatesCount = prop.availablePatchCountByClassification.updates, toolsCount = prop.availablePatchCountByClassification.tools, otherCount = prop.availablePatchCountByClassification.other, OS = prop.osType
| project lastTime, id, OS, updateRollupCount, featurePackCount, servicePackCount, definitionCount, securityCount, criticalCount, updatesCount, toolsCount, otherCount
az graph query -q "PatchAssessmentResources | where type !has 'softwarepatches' | extend prop = parse_json(properties) | extend lastTime = properties.lastModifiedDateTime | extend updateRollupCount = prop.availablePatchCountByClassification.updateRollup, featurePackCount = prop.availablePatchCountByClassification.featurePack, servicePackCount = prop.availablePatchCountByClassification.servicePack, definitionCount = prop.availablePatchCountByClassification.definition, securityCount = prop.availablePatchCountByClassification.security, criticalCount = prop.availablePatchCountByClassification.critical, updatesCount = prop.availablePatchCountByClassification.updates, toolsCount = prop.availablePatchCountByClassification.tools, otherCount = prop.availablePatchCountByClassification.other, OS = prop.osType | project lastTime, id, OS, updateRollupCount, featurePackCount, servicePackCount, definitionCount, securityCount, criticalCount, updatesCount, toolsCount, otherCount"

Seznam dokončené instalace aktualizace operačního systému Linux

Vrátí seznam stavu linuxového serveru – spuštění instalace aktualizace operačního systému pro vaše počítače za posledních 7 dnů.

PatchAssessmentResources
| where type has 'softwarepatches' and properties has 'version'
| extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4)), tostring(RunID = split(id, '/', 10))
| extend prop = parse_json(properties)
| extend lTime = todatetime(prop.lastModifiedDateTime), patchName = tostring(prop.patchName), version = tostring(prop.version), installationState = tostring(prop.installationState), classifications = tostring(prop.classifications)
| where lTime > ago(7d)
| project lTime, RunID, machineName, rgName, resourceType, patchName, version, classifications, installationState
| sort by RunID
az graph query -q "PatchAssessmentResources | where type has 'softwarepatches' and properties has 'version' | extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4)), tostring(RunID = split(id, '/', 10)) | extend prop = parse_json(properties) | extend lTime = todatetime(prop.lastModifiedDateTime), patchName = tostring(prop.patchName), version = tostring(prop.version), installationState = tostring(prop.installationState), classifications = tostring(prop.classifications) | where lTime > ago(7d) | project lTime, RunID, machineName, rgName, resourceType, patchName, version, classifications, installationState | sort by RunID"

Seznam virtuálních počítačů a přidružených stavů dostupnosti podle ID prostředků

Vrátí nejnovější seznam virtuálních počítačů (typu Microsoft.Compute/virtualMachines) agregovaných podle stavu dostupnosti. Dotaz také poskytuje přidružené ID prostředku založené na properties.targetResourceId, pro snadné ladění a zmírnění rizik. Stavy dostupnosti můžou být jedna ze čtyř hodnot: Dostupná, Nedostupná, Degradovaná a Neznámá. Další informace o tom, co jednotlivé stavy dostupnosti znamenají, najdete v přehledu služby Azure Resource Health.

HealthResources
| where type =~ 'microsoft.resourcehealth/availabilitystatuses'
| summarize by ResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState)
az graph query -q "HealthResources | where type =~ 'microsoft.resourcehealth/availabilitystatuses' | summarize by ResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState)"

Seznam virtuálních počítačů podle stavu dostupnosti a stavu napájení s ID prostředků a skupinami prostředků

Vrátí seznam virtuálních počítačů (typu Microsoft.Compute/virtualMachines) agregovaných podle stavu napájení a stavu dostupnosti, aby byly pro vaše virtuální počítače soudržné. Dotaz také poskytuje podrobnosti o skupině prostředků a ID prostředku přidruženém ke každé položce, abyste si podrobně prohlédli vaše prostředky.

Resources
| where type =~ 'microsoft.compute/virtualmachines'
| project resourceGroup, Id = tolower(id), PowerState = tostring( properties.extended.instanceView.powerState.code)
| join kind=leftouter (
  HealthResources
  | where type =~ 'microsoft.resourcehealth/availabilitystatuses'
  | where tostring(properties.targetResourceType) =~ 'microsoft.compute/virtualmachines'
  | project targetResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState))
  on $left.Id == $right.targetResourceId
| project-away targetResourceId
| where PowerState != 'PowerState/deallocated'
az graph query -q "Resources | where type =~ 'microsoft.compute/virtualmachines' | project resourceGroup, Id = tolower(id), PowerState = tostring( properties.extended.instanceView.powerState.code) | join kind=leftouter ( HealthResources | where type =~ 'microsoft.resourcehealth/availabilitystatuses' | where tostring(properties.targetResourceType) =~ 'microsoft.compute/virtualmachines' | project targetResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState)) on \$left.Id == \$right.targetResourceId | project-away targetResourceId | where PowerState != 'PowerState/deallocated'"

Seznam virtuálních počítačů, které nejsou dostupné podle ID prostředků

Vrátí nejnovější seznam virtuálních počítačů (typu Microsoft.Compute/virtualMachines) agregovaných podle jejich stavu dostupnosti. Vyplněný seznam zvýrazní jenom virtuální počítače, jejichž stav dostupnosti není dostupný , abyste měli jistotu, že víte o všech týkajících se stavů, ve kterých jsou virtuální počítače. Pokud jsou všechny virtuální počítače dostupné, můžete očekávat, že se nezobrazí žádné výsledky.

HealthResources
| where type =~ 'microsoft.resourcehealth/availabilitystatuses'
| where tostring(properties.availabilityState) != 'Available'
| summarize by ResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState)
az graph query -q "HealthResources | where type =~ 'microsoft.resourcehealth/availabilitystatuses' | where tostring(properties.availabilityState) != 'Available' | summarize by ResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState)"

Seznam dokončené instalace aktualizace operačního systému Windows Server

Vrátí seznam stavu Windows Serveru – instalace aktualizací operačního systému se provádí pro vaše počítače za posledních 7 dnů.

PatchAssessmentResources
| where type has 'softwarepatches' and properties !has 'version'
| extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4)), tostring(RunID = split(id, '/', 10))
| extend prop = parse_json(properties)
| extend lTime = todatetime(prop.lastModifiedDateTime), patchName = tostring(prop.patchName), kbId = tostring(prop.kbId), installationState = tostring(prop.installationState), classifications = tostring(prop.classifications)
| where lTime > ago(7d)
| project lTime, RunID, machineName, rgName, resourceType, patchName, kbId, classifications, installationState
| sort by RunID
az graph query -q "PatchAssessmentResources | where type has 'softwarepatches' and properties !has 'version' | extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4)), tostring(RunID = split(id, '/', 10)) | extend prop = parse_json(properties) | extend lTime = todatetime(prop.lastModifiedDateTime), patchName = tostring(prop.patchName), kbId = tostring(prop.kbId), installationState = tostring(prop.installationState), classifications = tostring(prop.classifications) | where lTime > ago(7d) | project lTime, RunID, machineName, rgName, resourceType, patchName, kbId, classifications, installationState | sort by RunID"

Výpis virtuálních počítačů se síťovým rozhraním a veřejnou IP adresou

Tento dotaz používá dva leftouter join příkazy k propojení virtuálních počítačů vytvořených pomocí modelu nasazení Resource Manager, souvisejících síťových rozhraní a všech veřejných IP adres souvisejících s těmito síťovými rozhraními.

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)
  | mv-expand ipconfig=properties.ipConfigurations
  | where ipConfigsCount == 1 or ipconfig.properties.primary =~ 'true'
  | project nicId = id, publicIpId = tostring(ipconfig.properties.publicIPAddress.id))
  on nicId
| project-away nicId1
| summarize by vmId, vmName, vmSize, nicId, publicIpId
| join kind=leftouter (
  Resources
  | where type =~ 'microsoft.network/publicipaddresses'
  | project publicIpId = id, publicIpAddress = properties.ipAddress)
on publicIpId
| project-away publicIpId1
az graph query -q "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) | mv-expand ipconfig=properties.ipConfigurations | where ipConfigsCount == 1 or ipconfig.properties.primary =~ 'true' | project nicId = id, publicIpId = tostring(ipconfig.properties.publicIPAddress.id)) on nicId | project-away nicId1 | summarize by vmId, vmName, vmSize, nicId, publicIpId | join kind=leftouter ( Resources | where type =~ 'microsoft.network/publicipaddresses' | project publicIpId = id, publicIpAddress = properties.ipAddress) on publicIpId | project-away publicIpId1"

Zobrazení všech virtuálních počítačů, které jsou seřazené podle názvu v sestupném pořadí

Když chceme vypsat pouze virtuální počítače (typ Microsoft.Compute/virtualMachines), můžeme ve výsledcích porovnat shodu vlastnosti type (Typ). Podobně jako v předchozím dotazu musí být změny descorder by být řazeny sestupně. =~ ve shodě typu říká Azure Resource Graphu aby nerozlišoval malá a velká písmena.

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"

Zobrazení prvních pěti virtuálních počítačů podle názvu a jejich typu operačního systému

Tento dotaz používá top pouze k načtení pěti odpovídajících záznamů, které jsou seřazené podle názvu. Typ prostředku Azure je Microsoft.Compute/virtualMachines. project říká Azure Resource Graph, které vlastnosti použít.

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"

Shrnutí virtuálního počítače rozšířenými stavy napájení

Tento dotaz používá rozšířené vlastnosti virtuálních počítačů ke shrnutí podle stavů napájení.

Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
az graph query -q "Resources | where type == 'microsoft.compute/virtualmachines' | summarize count() by tostring(properties.extended.instanceView.powerState.code)"

Virtuální počítače odpovídající regulárnímu výrazu

Tento dotaz vyhledá virtuální počítače, které odpovídají regulárnímu výrazu (označovanému jako regulární výraz). Odpovídá regulární výraz @ umožňuje definovat regulární výraz, který se má shodovat, což je ^Contoso(.*)[0-9]+$. Tato definice regulárního výrazu je vysvětlena jako:

  • ^ – Porovnání musí začít na začátku řetězce.
  • Contoso – Řetězec s rozlišováním velkých a malých písmen.
  • (.*) - Shoda dílčího výrazu:
    • . – Odpovídá jakémukoli jednomu znaku (s výjimkou nového řádku).
    • * – Shoduje se s předchozím prvkem nulakrát nebo vícekrát.
  • [0-9] – Shoda skupiny znaků pro čísla 0 až 9.
  • + – Shoduje se s předchozím prvkem jednou nebo vícekrát.
  • $ – Shoda s předchozím prvkem se musí vyskytovat na konci řetězce.

Po porovnání podle názvu, dotaz promítne název a pořadí vzestupně podle názvu.

Resources
| where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+$'
| project name
| order by name asc
az graph query -q "Resources | where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+\$' | project name | order by name asc"

Další kroky

  • Přečtěte si další informace o dotazovacím jazyce.
  • Přečtěte si další informace o tom, jak prozkoumat prostředky.