Output delle query di Azure PowerShell
I risultati di ogni cmdlet di PowerShell di Azure sono un oggetto di Azure PowerShell. Anche i cmdlet che non sono esplicitamente operazioni Get-
potrebbero restituire un valore che può essere controllato per fornire informazioni su una risorsa che è stata creata o modificata. Mentre la maggior parte dei cmdlet restituisce un singolo oggetto, alcuni restituiscono una matrice da scorrere.
In genere, è possibile eseguire una query sull'output di Azure PowerShell con il cmdlet Select-Object. L'output può essere filtrato con Where-Object.
Selezionare proprietà semplici
Nel formato di tabella predefinito i cmdlet di Azure PowerShell non visualizzano tutte le relative proprietà disponibili.
È possibile ottenere tutte le proprietà usando il cmdlet Format-List o inviando l'output tramite pipe 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 individuato i nomi delle proprietà a cui si è interessati, è possibile usare quei nomi di proprietà con Select-Object
per richiamarli 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 derivante dall'uso di Select-Object
viene sempre formattato per visualizzare le informazioni richieste. Per altre informazioni sull'uso della formattazione come parte della query su risultati dei cmdlet, vedere Formattare l'output dei cmdlet di Azure PowerShell.
Selezionare proprietà annidate
Alcune proprietà nell'output dei cmdlet di Azure PowerShell usano oggetti annidati come ad esempio la proprietà StorageProfile
dell'output di Get-AzVM
. Per ottenere un valore da una proprietà annidata, fornire un nome visualizzato e il percorso completo del valore che si vuole controllare come parte di un argomento dizionario a 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 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 i risultati in base a qualsiasi valore della proprietà, comprese le proprietà annidate. L'esempio seguente mostra 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 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