Выходные данные запроса к Azure PowerShell
Результаты каждого командлета Azure PowerShell представлены в виде объекта Azure PowerShell. Даже командлеты, не являющиеся явными операциями Get-
, могут возвращать значение, которое можно проверить, чтобы получить информацию о созданном или измененном ресурсе. Хотя большинство командлетов возвращают один объект, некоторые возвращают массив, для которого необходимо выполнять итерацию.
Обычно вы запрашиваете выходные данные из Azure PowerShell с помощью командлета Select-Object . Выходные данные можно отфильтровать с помощью Where-Object.
Выбор простых свойств
В формате таблицы по умолчанию командлеты Azure PowerShell не отображают все доступные свойства.
Полный список свойств можно получить, выполнив командлет Format-List или передав выходные данные в 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
всегда форматируется для отображения запрашиваемой информации. Чтобы узнать об использовании форматирования в качестве части результатов запроса командлета, см. статью Форматирование выходных данных командлетов Azure PowerShell.
Выбор вложенных свойств
В некоторых свойствах выходных данных командлета Azure PowerShell используются вложенные объекты, например свойство 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
Каждый аргумент словаря выбирает одно свойство из объекта. Извлекаемое свойство должно быть частью выражения.
Фильтрация результатов
Командлет Where-Object
позволяет фильтровать результаты в зависимости от любого значения свойства, включая вложенные свойства. В следующем примере показано, как использовать Where-Object
для поиска виртуальных машин Linux в группе ресурсов.
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