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órej można użyć do sprawdzenia informacji o zasobie, który został utworzony lub zmodyfikowany. Podczas gdy większość poleceń cmdlet zwraca pojedynczy obiekt, niektóre zwracają tablicę, którą należy przeiterować.

Zazwyczaj do zapytywania danych wyjściowych z Azure PowerShell używa się polecenia cmdlet Select-Object. Dane wyjściowe można filtrować za pomocą 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 przełączenia danych wyjściowych do 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

Gdy znasz nazwy właściwości, które cię interesują, możesz użyć tych nazw właściwości z Select-Object, aby uzyskać 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 z używania Select-Object są zawsze formatowane w celu wyświetlenia żądanych informacji. Aby dowiedzieć się więcej na temat używania formatowania w ramach wykonywania zapytań dotyczących wyników poleceń cmdlet, zobacz Format danych wyjściowych poleceń cmdlet programu Azure PowerShell.

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

Niektóre właściwości w wynikach poleceń cmdlet programu Azure PowerShell wykorzystują obiekty zagnieżdżone, na przykład właściwość StorageProfile w wynikach Get-AzVM. Aby uzyskać wartość z właściwości zagnieżdżonej, podaj nazwę do wyświetlenia i pełną ścieżkę do wartości, którą chcesz sprawdzić, w ramach argumentu słownika dla 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 umożliwia filtrowanie wyników według dowolnej wartości właściwości, w tym właściwości zagnieżdżonych. W następnym przykładzie pokazano, jak używać 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żesz przekazywać wyniki Select-Object do Where-Object oraz odwrotnie. W celach wydajności zawsze zaleca się umieszczenie operacji Where-Object przed 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