Salida de consulta de Azure PowerShell
Los resultados de cada cmdlet de Azure PowerShell son un objeto de Azure PowerShell. Incluso los cmdlets que no son operaciones de tipo Get-
explícitamente pueden devolver un valor que se puede inspeccionar para proporcionar información sobre un recurso que se creó o modificó. Aunque la mayoría de los cmdlets devuelven un solo objeto, algunos devuelven una matriz que se debe recorrer en iteración.
Normalmente, se consulta la salida de Azure PowerShell 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 sus propiedades disponibles.
Puede obtener las propiedades completas mediante el cmdlet
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
Una vez que conozca los nombres de las propiedades que le interesan, puede usar esos nombres de propiedad con Select-Object
para obtenerlos 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 generada por el uso de Select-Object
siempre está formateada 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 fines de rendimiento, siempre se recomienda colocar la operación de 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