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