共用方式為


Azure PowerShell 的查詢輸出

每個 Azure PowerShell Cmdlet 的結果都是 Azure PowerShell 物件。 即使是未明確標示為 Get- 作業的 Cmdlet 也可能傳回一個可檢查的值,以提供有關已建立或修改資源的相關資訊。 雖然大部分 Cmdlet 都會傳回單一物件,但有些 Cmdlet 會傳回應該逐一查看的陣列。

您通常會使用 select-Object Cmdlet 查詢 Azure PowerShell 的輸出。 您可以使用 Where-Object來篩選 的輸出。

選取簡單屬性

在預設數據表格式中,Azure PowerShell Cmdlet 不會顯示其所有可用的屬性。 您可以使用 Format-List cmdlet 取得完整屬性,或將輸出管線傳送至 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

一旦您知道您感興趣的屬性名稱之後,就可以搭配 Select-Object 使用這些屬性名稱來直接取得它們:

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

使用 Select-Object 的輸出一律會格式化以顯示要求的資訊。 若要瞭解如何在查詢 Cmdlet 結果中使用格式設定,請參閱 格式化 Azure PowerShell Cmdlet 輸出

選取巢狀屬性

在 Azure PowerShell cmdlet 的某些輸出中,屬性會使用巢狀物件,例如 Get-AzVM 輸出中的 StorageProfile 屬性。 若要從巢狀屬性中取得值,請提供顯示名稱以及您想要檢查之值的完整路徑,並將其作為字典引數的一部分,傳遞給 Select-Object:

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

每個字典自變數都會從 物件中選取一個屬性。 要擷取的屬性必須是表達式的一部分。

篩選結果

Where-Object Cmdlet 可讓您根據任何屬性值來篩選結果,包括巢狀屬性。 下一個範例示範如何使用 Where-Object 來尋找資源群組中的Linux VM。

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

您可以將 Select-ObjectWhere-Object 的結果串接輸入至對方。 為了效能考量,建議在 Select-Object之前執行 Where-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