Wykonywanie zapytań dotyczących danych wyjściowych programu Azure PowerShell

Wyniki każdego polecenia cmdlet programu Azure PowerShell są obiektem programu Azure PowerShell. Nawet polecenia cmdlet, które nie są jawnie operacjami Get-, mogą zwracać wartość, którą można zbadać, aby uzyskać informacje o utworzonym lub zmodyfikowanym zasobie. Większość poleceń cmdlet zwraca jeden obiekt, ale niektóre zwracają tablicę, na której należy wykonać iterację.

W prawie wszystkich przypadkach wysyłasz zapytania dotyczące danych wyjściowych z Azure PowerShell za pomocą polecenia cmdlet Select-Object. Dane wyjściowe można filtrować za pomocą polecenia Where-Object.

Wybieranie prostych właściwości

W domyślnym formacie tabeli polecenia cmdlet programu Azure PowerShell nie wyświetlają wszystkich dostępnych właściwości. Pełne właściwości można uzyskać przy użyciu polecenia cmdlet Format-List lub potokowania danych wyjściowych do Select-Object -Property *polecenia :

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

Jeśli znasz nazwy odpowiednich właściwości, możesz ich użyć z poleceniem Select-Object, aby pobrać je bezpośrednio:

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

Dane wyjściowe polecenia Select-Object zawsze są formatowane w celu wyświetlenia żądanych informacji. Aby uzyskać informacje o używaniu formatowania w zapytaniach dotyczących wyników poleceń cmdlet, zobacz Formatowanie danych wyjściowych polecenia cmdlet programu Azure PowerShell.

Wybieranie właściwości zagnieżdżonych

Niektóre właściwości w danych wyjściowych poleceń cmdlet programu Azure PowerShell używają obiektów zagnieżdżonych, takich jak właściwość StorageProfile danych wyjściowych polecenia Get-AzVM. Aby uzyskać wartość z właściwości zagnieżdżonej, podaj nazwę wyświetlaną i pełną ścieżkę do badanej wartości jako część argumentu słownika dla polecenia Select-Object:

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

Każdy argument słownika wybiera jedną właściwość z obiektu. Właściwość do wyodrębnienia musi być częścią wyrażenia.

Filtrowanie wyników

Polecenie cmdlet Where-Object pozwala filtrować wyniki na podstawie dowolnej wartości właściwości, w tym właściwości zagnieżdżonych. W następnym przykładzie pokazano używanie polecenia Where-Object do znajdowania maszyn wirtualnych z systemem Linux w grupie zasobów.

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

Można potokowo przekazywać wyniki poleceń Select-Object i Where-Object między tymi poleceniami. Ze względu na wydajność zawsze zaleca się umieszczanie operacji Where-Object przed operacją 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