你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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-Object
和 Where-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