Condividi tramite


Risultato della query di Azure PowerShell

I risultati di ogni cmdlet di Azure PowerShell sono un oggetto Azure PowerShell. Anche i cmdlet che non sono esplicitamente Get- operazioni potrebbero restituire un valore che può essere esaminato, per fornire informazioni su una risorsa creata o modificata. Mentre la maggior parte dei cmdlet restituisce un singolo oggetto, alcuni restituiscono una matrice che deve essere iterata.

In genere, si esegue una query sull'output di Azure PowerShell con il cmdlet Select-Object. L'output può essere filtrato con Where-Object.

Selezionare le proprietà semplici

Nel formato di tabella predefinito, i cmdlet di Azure PowerShell non visualizzano tutte le proprietà disponibili. È possibile ottenere le proprietà complete usando il cmdlet Format-List oppure inviando l'output a 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

Dopo aver appreso i nomi delle proprietà a cui si è interessati, è possibile usare tali nomi di proprietà con Select-Object per ottenerli direttamente:

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

L'output ottenuto utilizzando Select-Object è sempre formattato per visualizzare le informazioni richieste. Per informazioni sull'uso della formattazione come parte dei risultati dei cmdlet di query, vedere Formattare l'output dei cmdlet di Azure PowerShell.

Selezionare le proprietà annidate

Alcune proprietà nell'output dei cmdlet di Azure PowerShell usano oggetti annidati, ad esempio la proprietà StorageProfile di Get-AzVM output. Per ottenere un valore da una proprietà annidata, specificare un nome visualizzato e il percorso completo del valore da esaminare come parte di un argomento del dizionario per Select-Object:

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

Ogni argomento del dizionario seleziona una proprietà dall'oggetto . La proprietà da estrarre deve far parte di un'espressione.

Filtrare i risultati

Il cmdlet Where-Object consente di filtrare il risultato in base a qualsiasi valore della proprietà, incluse le proprietà annidate. L'esempio seguente illustra come usare Where-Object per trovare le macchine virtuali Linux in un gruppo di risorse.

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

È possibile inviare tramite pipe i risultati di Select-Object e Where-Object l'uno all'altro. Ai fini delle prestazioni, è sempre consigliabile inserire l'operazione di Where-Object prima di 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