查詢 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 輸出中的某些屬性會使用巢狀物件,例如 StorageProfile
輸出的屬性 Get-AzVM
。 若要從巢狀屬性取得值,請提供您想要檢查做為字典自變數 Select-Object
一部分之值的顯示名稱和完整路徑:
Get-AzVM -ResourceGroupName TestGroup |
Select-Object -Property Name, @{label='OSType'; expression={$_.StorageProfile.OSDisk.OSType}}
Name OSType
---- ------
TestVM Linux
TestVM2 Linux
WinVM Windows
每個字典自變數都會從 物件中選取一個屬性。 要擷取的屬性必須是表達式的一部分。
篩選結果
Cmdlet Where-Object
可讓您根據任何屬性值來篩選結果,包括巢狀屬性。 下一個範例示範如何使用 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
您可以使用管線將 和 Where-Object
的結果Select-Object
傳送至彼此。 為了達到效能的目的,一律建議將作業放在 Where-Object
之前 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
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應