Partilhar via


Saída de consulta do Azure PowerShell

Os resultados de cada cmdlet do Azure PowerShell são um objeto do Azure PowerShell. Mesmo os cmdlets que não são explicitamente operações Get- podem devolver um valor passível de inspeção, para fornecer informações sobre um recurso criado ou modificado. Enquanto a maioria dos cmdlets retorna um único objeto, alguns retornam uma matriz que deve ser iterada.

Normalmente, você consulta a saída do Azure PowerShell com o cmdlet Select-Object. A saída pode ser filtrada com Where-Object.

Selecionar propriedades simples

No formato de tabela padrão, os cmdlets do Azure PowerShell não exibem todas as suas propriedades disponíveis. Você pode obter as propriedades completas usando o cmdlet Format-List ou canalizando a saída para 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

Depois de saber os nomes das propriedades em que está interessado, você pode usar esses nomes com Select-Object para obtê-los diretamente:

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

A saída do uso do Select-Object é sempre formatada para exibir as informações solicitadas. Para saber mais sobre como usar a formatação como parte dos resultados do cmdlet de consulta, consulte Formatar a saída do cmdlet do Azure PowerShell.

Selecionar propriedades aninhadas

Algumas propriedades na saída do cmdlet do Azure PowerShell usam objetos aninhados, como a propriedade StorageProfile na saída de Get-AzVM. Para obter um valor de uma propriedade aninhada, forneça um nome para exibição e o caminho completo para o valor que você deseja inspecionar como parte de um argumento de dicionário para Select-Object:

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

Cada argumento de dicionário seleciona uma propriedade do objeto. A propriedade a extrair deve fazer parte de uma expressão.

Filtrar resultados

O cmdlet Where-Object permite filtrar o resultado baseado em qualquer valor de propriedade, incluindo propriedades aninhadas. O próximo exemplo mostra como usar Where-Object para localizar as VMs do Linux em um grupo de recursos.

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

Você pode canalizar os resultados de Select-Object e Where-Object um para o outro. Para fins de desempenho, é sempre recomendável colocar a operação Where-Object antes de 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