Frågeresultat av Azure PowerShell

Resultatet av varje cmdlet Azure PowerShell är ett Azure PowerShell objekt. Även cmdlets som inte uttryckligen är åtgärder kan returnera ett värde som kan kontrolleras för att ge information om en resurs som Get- har skapats eller ändrats. Även om de flesta cmdlets returnerar ett enstaka objekt, returnerar vissa en matris som bör itereras genom.

I nästan alla fall kan du skapa frågor från Azure PowerShell med cmdleten Select-Object. Utdata kan filtreras med Where-Object.

Välj enkla egenskaper

I standardtabellformatet Azure PowerShell cmdlets inte alla sina tillgängliga egenskaper. Du kan få fullständiga egenskaper med hjälp av cmdleten Format-List eller genom att pipa utdata Select-Object -Property * till:

Get-AzVM -Name TestVM -ResourceGroupName TestGroup |
  Select-Object -Property *
ResourceGroupName        : TESTGROUP
Id                       : /subscriptions/711d8ed1-b888-4c52-8ab9-66f07b87eb6b/resourceGroups/TESTGROUP/providers/Micro
                           soft.Compute/virtualMachines/TestVM
VmId                     : 711d8ed1-b888-4c52-8ab9-66f07b87eb6b
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                : 711d8ed1-b888-4c52-8ab9-66f07b87eb6b
StatusCode               : OK

När du vet namnen på egenskaperna som du är intresserad av kan du använda de egenskapsnamnen med för Select-Object att få dem direkt:

Get-AzVM -Name TestVM -ResourceGroupName TestGroup |
  Select-Object -Property Name, VmId, ProvisioningState
Name   VmId                                 ProvisioningState
----   ----                                 -----------------
TestVM 711d8ed1-b888-4c52-8ab9-66f07b87eb6b Succeeded

Utdata från att Select-Object använda formateras alltid så att den information som efterfrågas visas. Mer information om hur du använder formatering som en del av sökning av cmdlet-resultat finns i Azure PowerShell-cmdlet-utdata.

Välj kapslade egenskaper

Vissa egenskaper i Azure PowerShell-cmdlet-utdata använder kapslade objekt, t.ex. StorageProfile egenskapen 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 som du vill kontrollera som en del av ett ordlisteargument för Select-Object att:

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

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

Filtrera resultat

Med Where-Object cmdleten kan du filtrera resultatet baserat på något egenskapsvärde, inklusive kapslade egenskaper. I nästa exempel visas hur du hittar linux virtuella maskiner Where-Object 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 leda resultatet av Select-Object Where-Object och till varandra. Av prestandasyfte rekommenderar vi alltid att åtgärden utförs Where-Object Select-Object före:

Get-AzVM -ResourceGroupName TestGroup |
  Where-Object {$_.StorageProfile.OsDisk.OsType -eq 'Linux'} |
  Select-Object -Property Name, VmID, ProvisioningState
Name    VmId                                 ProvisioningState
----    ----                                 -----------------
TestVM  711d8ed1-b888-4c52-8ab9-66f07b87eb6  Succeeded
TestVM2 cbcee769-dd78-45e3-a14d-2ad11c647d0  Succeeded