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. Úplný seznam ukázek Azure Resource Graphu najdete v ukázkách Resource Graphu podle kategorií a ukázek Resource Graphu podle tabulky.
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 přehledu 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
druh jako levý k získání rozšíření virtuálních počítačů tak, že se shoduje s velkými písmeny 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ého rozšíření, kde id, OSName, OSType a VMSize jsou stejné do jedné vlastnosti pole. Nakonec jsme order by
malá písmena 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ší podrobnosti 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. Naplněný seznam zvýrazňuje jenom virtuální počítače, jejichž stav dostupnosti není Dostupný, abyste měli jistotu, že víte o všech souvisejících stavech, ve které 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 instalace aktualizací operačního systému Windows Server, který 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 levé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 desc
order 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.
- Prohlédnou si ukázky dotazů v úvodním jazyce.
- Podívejte se na ukázky pokročilých dotazů jazyka.