Abfrageausgabe von Azure PowerShell
Die Ergebnisse jedes Azure PowerShell-Cmdlets sind ein Azure PowerShell-Objekt. Selbst Cmdlets, die nicht explizit Get-
-Vorgänge sind, könnten einen Wert zurückgeben, der überprüft werden kann, um Informationen über eine Ressource bereitzustellen, die erstellt oder geändert wurde. Während die meisten Cmdlets ein einzelnes Objekt zurückgeben, geben einige ein Array zurück, das durchlaufen werden soll.
In der Regel wird die Ausgabe von Azure PowerShell mit dem Cmdlet Select-Object abgefragt. Die Ausgabe kann mit Where-Object gefiltert werden.
Auswählen einfacher Eigenschaften
Im Standardtabellenformat zeigen Azure PowerShell-Cmdlets nicht alle verfügbaren Eigenschaften an.
Sie können die vollständigen Eigenschaften mithilfe des Cmdlets Format-List oder durch Weiterleiten der Ausgabe an Select-Object -Property *
abrufen:
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
Wenn Ihnen die Namen der für Sie relevanten Eigenschaften bekannt sind, können Sie diese Eigenschaftennamen mit Select-Object
verwenden, um sie direkt abzurufen:
Get-AzVM -Name TestVM -ResourceGroupName TestGroup |
Select-Object -Property Name, VmId, ProvisioningState
Name VmId ProvisioningState
---- ---- -----------------
TestVM 00000000-0000-0000-0000-000000000000 Succeeded
Die Ausgabe für Select-Object
ist immer zur Anzeige der angeforderten Informationen formatiert. Informationen zur Verwendung der Formatierung beim Abfragen von Cmdlet-Ergebnissen finden Sie unter Format Azure PowerShell cmdlet output (Formatieren der Ausgabe von Azure PowerShell-Cmdlets).
Auswählen geschachtelter Eigenschaften
Einige Eigenschaften in der Ausgabe von Azure PowerShell-Cmdlets verwenden geschachtelte Objekte, z. B. die StorageProfile
-Eigenschaft der Ausgabe von Get-AzVM
. Um einen Wert aus einer geschachtelten Eigenschaft abzurufen, geben Sie einen Anzeigenamen und den vollständigen Pfad des Werts an, den Sie als Teil eines Wörterbucharguments für Select-Object
überprüfen möchten:
Get-AzVM -ResourceGroupName TestGroup |
Select-Object -Property Name, @{label='OSType'; expression={$_.StorageProfile.OSDisk.OSType}}
Name OSType
---- ------
TestVM Linux
TestVM2 Linux
WinVM Windows
Jedes Wörterbuchargument wählt eine Eigenschaft aus dem Objekt aus. Eine Eigenschaft, die extrahiert werden soll, muss Bestandteil eines Ausdrucks sein.
Filterergebnisse
Mit dem Cmdlet Where-Object
können Sie das Ergebnis basierend auf einem beliebigen Eigenschaftswert filtern, einschließlich geschachtelter Eigenschaften. Das nächste Beispiel zeigt, wie Sie Where-Object
verwenden, um die Linux-VMs in einer Ressourcengruppe zu finden.
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
Die Ergebnisse von Select-Object
und Where-Object
können aneinander weitergeleitet werden. Aus Leistungsgründen wird empfohlen, den Where-Object
-Vorgang immer vor Select-Object
zu platzieren:
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
Azure PowerShell