Выходные данные запроса к 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