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