Udostępnij za pośrednictwem


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ę.

Zazwyczaj zapytania dotyczące danych wyjściowych z programu Azure PowerShell są zapytania 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 polecenia 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

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.

Filtruj wyniki

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