Consulta de las salidas de Azure PowerShell

Los resultados de cada cmdlet de Azure PowerShell son un objeto de Azure PowerShell. Incluso los cmdlets que no son explícitamente operaciones Get- podrían devolver un valor que se puede inspeccionar para obtener información sobre los recursos creados o modificados. Aunque la mayoría de los cmdlets devuelve un único objeto, algunos devuelven una matriz que se debe recorrer en iteración.

En general, las salidas de Azure PowerShell se consultan con el cmdlet Select-Object. La salida se puede filtrar con Where-Object.

Selección de propiedades simples

En el formato de tabla predeterminado, los cmdlets de Azure PowerShell no muestran todas las propiedades disponibles. Puede obtener las propiedades completas con el cmdlet Format-List, o canalizando la salida a 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

Cuando sepa los nombres de las propiedades que le interesan, puede usar esos nombres de propiedad con Select-Object para acceder a ellos directamente:

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

La salida de Select-Object siempre tiene formato para mostrar la información solicitada. Para más información sobre el uso del formato como parte de la consulta de resultados del cmdlet, consulte Formato de la salida de los cmdlets de Azure PowerShell.

Selección de propiedades anidadas

Algunas propiedades en la salida de los cmdlets de Azure PowerShell utilizan objetos anidados, como la propiedad StorageProfile en la salida de Get-AzVM. Para obtener el valor de una propiedad anidada, proporcione un nombre para mostrar y la ruta de acceso completa al valor que desea inspeccionar como parte de un argumento de diccionario en 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 diccionario selecciona una propiedad del objeto. La propiedad que se va a extraer debe formar parte de una expresión.

Filtrar resultados

El cmdlet Where-Object permite filtrar el resultado en función de los valores de una propiedad, incluidas las propiedades anidadas. En el ejemplo siguiente se muestra cómo usar Where-Object para buscar las máquinas virtuales Linux en un 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

Puede canalizar los resultados de Select-Object y Where-Object entre sí. Para mejorar el rendimiento, se recomienda colocar siempre la operación 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