Dela via


Frågeutdata från Azure PowerShell

Resultatet av varje Azure PowerShell-cmdlet är ett Azure PowerShell-objekt. Även cmdletar som inte uttryckligen är Get--åtgärder kan returnera ett värde som kan granskas för att ge information om en resurs som har skapats eller ändrats. Medan de flesta cmdletar returnerar ett enskilt objekt returnerar vissa en matris som ska itereras igenom.

Vanligtvis kör du frågor mot utdata från Azure PowerShell med cmdleten Select-Object. Utdata kan filtreras med Where-Object.

Välj enkla egenskaper

I standardtabellformatet visar Inte Azure PowerShell-cmdletar alla tillgängliga egenskaper. Du kan hämta de fullständiga egenskaperna med hjälp av cmdleten Format-List eller genom att skicka utdata till Select-Object -Property *:

Get-AzVM -Name TestVM -ResourceGroupName TestGroup |
  Select-Object -Property *
ResourceGroupName        : TESTGROUP
Id                       : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/TESTGROUP/providers/Micro
                           soft.Compute/virtualMachines/TestVM
VmId                     : 00000000-0000-0000-0000-000000000000
Name                     : TestVM
Type                     : Microsoft.Compute/virtualMachines
Location                 : westus2
LicenseType              :
Tags                     : {}
AvailabilitySetReference :
DiagnosticsProfile       :
Extensions               : {}
HardwareProfile          : Microsoft.Azure.Management.Compute.Models.HardwareProfile
InstanceView             :
NetworkProfile           : Microsoft.Azure.Management.Compute.Models.NetworkProfile
OSProfile                : Microsoft.Azure.Management.Compute.Models.OSProfile
Plan                     :
ProvisioningState        : Succeeded
StorageProfile           : Microsoft.Azure.Management.Compute.Models.StorageProfile
DisplayHint              : Compact
Identity                 :
Zones                    : {}
FullyQualifiedDomainName :
AdditionalCapabilities   :
RequestId                : 00000000-0000-0000-0000-000000000000
StatusCode               : OK

När du känner till namnen på de egenskaper som du är intresserad av kan du använda dessa egenskapsnamn med Select-Object för att hämta dem direkt:

Get-AzVM -Name TestVM -ResourceGroupName TestGroup |
  Select-Object -Property Name, VmId, ProvisioningState
Name   VmId                                 ProvisioningState
----   ----                                 -----------------
TestVM 00000000-0000-0000-0000-000000000000 Succeeded

Utdata från att använda Select-Object formateras alltid för att visa den begärda informationen. Mer information om hur du använder formatering som en del av att fråga cmdlet-resultat finns i Formatera Azure PowerShell-cmdlet-utdata.

Välj kapslade egenskaper

Vissa egenskaper i Azure PowerShell-cmdlet-utdata använder kapslade objekt, till exempel egenskapen StorageProfile för Get-AzVM utdata. Om du vill hämta ett värde från en kapslad egenskap anger du ett visningsnamn och den fullständiga sökvägen till det värde du vill inspektera som en del av ett dictionary-argument till Select-Object:

Get-AzVM -ResourceGroupName TestGroup |
  Select-Object -Property Name, @{label='OSType'; expression={$_.StorageProfile.OSDisk.OSType}}
Name     OSType
----     ------
TestVM    Linux
TestVM2   Linux
WinVM   Windows

Varje ordlisteargument väljer en egenskap från objektet. Egenskapen som ska extraheras måste vara en del av ett uttryck.

Filtrera resultat

Med cmdleten Where-Object kan du filtrera resultatet baserat på alla egenskapsvärden, inklusive kapslade egenskaper. I nästa exempel visas hur du använder Where-Object för att hitta de virtuella Linux-datorerna i en resursgrupp.

Get-AzVM -ResourceGroupName TestGroup |
  Where-Object {$_.StorageProfile.OSDisk.OSType -eq 'Linux'}
ResourceGroupName    Name Location          VmSize OsType        NIC ProvisioningState Zone
-----------------    ---- --------          ------ ------        --- ----------------- ----
TestGroup          TestVM  westus2 Standard_D2s_v3  Linux  testvm299         Succeeded
TestGroup         TestVM2  westus2 Standard_D2s_v3  Linux testvm2669         Succeeded

Du kan skicka resultatet av Select-Object och Where-Object till varandra. I prestandasyfte rekommenderar vi alltid att du placerar åtgärden Where-Object före Select-Object:

Get-AzVM -ResourceGroupName TestGroup |
  Where-Object {$_.StorageProfile.OsDisk.OsType -eq 'Linux'} |
  Select-Object -Property Name, VmID, ProvisioningState
Name    VmId                                  ProvisioningState
----    ----                                  -----------------
TestVM  00000000-0000-0000-0000-000000000000  Succeeded
TestVM2 00000000-0000-0000-0000-000000000000  Succeeded