Consultar a saída do Azure PowerShellQuery output of Azure PowerShell

Os resultados de cada cmdlet do Azure PowerShell são um objeto do Azure PowerShell.The results of each Azure PowerShell cmdlet are an Azure PowerShell object. Mesmo cmdlets que não são explicitamente operações Get- podem retornar um valor que pode ser inspecionado para fornecer informações sobre um recurso que foi criado ou modificado.Even cmdlets that aren't explicitly Get- operations might return a value that can be inspected, to give information about a resource that was created or modified. Embora a maioria dos cmdlets retorne um objeto único, alguns retornam uma matriz que deve ser iterada.While most cmdlets return a single object, some return an array that should be iterated through.

Em quase todos os casos, você consulta a saída do Azure PowerShell com o cmdlet Select-Object, muitas vezes abreviado como select.In almost all cases, you query output from Azure PowerShell with the Select-Object cmdlet, often abbreviated to select. A saída pode ser filtrada com Where-Object ou seu alias where.Output can be filtered with Where-Object, or its alias where.

Selecionar propriedades simplesSelect simple properties

No formato de tabela padrão, os cmdlets do Azure PowerShell não exibem todas as suas propriedades disponíveis.In the default table format, Azure PowerShell cmdlets don't display all of their available properties. Você pode obter todas as propriedades usando o cmdlet Format-List ou redirecionando a saída para Select-Object *:You can get the full properties by using the Format-List cmdlet, or by piping output to Select-Object *:

Get-AzVM -Name TestVM -ResourceGroupName TestGroup | Select-Object *
ResourceGroupName        : TESTGROUP
Id                       : /subscriptions/711d8ed1-b888-4c52-8ab9-66f07b87eb6b/resourceGroups/TESTGROUP/providers/Micro
                           soft.Compute/virtualMachines/TestVM
VmId                     : 711d8ed1-b888-4c52-8ab9-66f07b87eb6b
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                : 711d8ed1-b888-4c52-8ab9-66f07b87eb6b
StatusCode               : OK

Assim que souber os nomes das propriedades nas quais está interessado, você pode usar esses nomes de propriedade com Select-Object para obtê-los diretamente:Once you know the names of the properties that you're interested in, you can use those property names with Select-Object to get them directly:

Get-AzVM -Name TestVM -ResourceGroupName TestGroup | Select-Object Name,VmId,ProvisioningState
Name   VmId                                 ProvisioningState
----   ----                                 -----------------
TestVM 711d8ed1-b888-4c52-8ab9-66f07b87eb6b Succeeded

A saída ao usar o Select-Object sempre é formatada para exibir as informações solicitadas.Output from using Select-Object is always formatted to display the requested information. Para saber mais sobre como usar a formatação como parte da consulta de resultados do cmdlet, confira Formatar saída de cmdlet do Azure PowerShell.To learn about using formatting as part of querying cmdlet results, see Format Azure PowerShell cmdlet output.

Selecionar propriedades aninhadasSelect nested properties

Algumas propriedades na saída do cmdlet do Azure PowerShell usam objetos aninhados, como a propriedade StorageProfile da saída Get-AzVM.Some properties in Azure PowerShell cmdlet output use nested objects, like the StorageProfile property of Get-AzVM output. Para obter um valor de uma propriedade aninhada, forneça um nome de exibição e o caminho completo para o valor que você deseja inspecionar como parte de um argumento de dicionário para Select-Object:To get a value from a nested property, provide a display name and the full path to the value you want to inspect as part of a dictionary argument to Select-Object:

Get-AzVM -ResourceGroupName TestGroup | `
    Select-Object Name,@{Name="OSType"; Expression={$_.StorageProfile.OSDisk.OSType}}
Name     OSType
----     ------
TestVM    Linux
TestVM2   Linux
WinVM   Windows

Cada argumento de dicionário seleciona uma propriedade do objeto.Each dictionary argument selects one property from the object. A propriedade a ser extraída deve ser parte de uma expressão.The property to extract must be part of an expression.

Resultados do filtroFilter results

O cmdlet Where-Object permite filtrar os resultados com base em qualquer valor de propriedade, incluindo propriedades aninhadas.The Where-Object cmdlet allows you to filter the result based on any property value, including nested properties. O próximo exemplo mostra como usar o Where-Object para localizar as VMs do Linux em um grupo de recursos.The next example shows how to use Where-Object to find the Linux VMs in a resource group.

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

É possível redirecionar os resultados de Select-Object e Where-Object entre si.You can pipe the results of Select-Object and Where-Object to each other. Para fins de desempenho, sempre é recomendável colocar a operação Where-Object antes de Select-Object:For performance purposes, it's always recommended to put the Where-Object operation before Select-Object:

Get-AzVM -ResourceGroupName TestGroup | `
    Where-Object {$_.StorageProfile.OsDisk.OsType -eq "Linux"} | `
    Select-Object Name,VmID,ProvisioningState
Name    VmId                                 ProvisioningState
----    ----                                 -----------------
TestVM  711d8ed1-b888-4c52-8ab9-66f07b87eb6  Succeeded
TestVM2 cbcee769-dd78-45e3-a14d-2ad11c647d0  Succeeded