Interroger la sortie d’Azure PowerShell

Les résultats de chaque cmdlet d’Azure PowerShell constituent un objet Azure PowerShell. Même les cmdlets qui ne sont pas explicitement des opérations Get- pourraient retourner une valeur pouvant être inspectée, pour donner des informations au sujet d’une ressource qui a été créée ou modifiée. Certaines cmdlets retournent un groupe qui doit être itéré, tandis que la plupart retourne un objet unique.

Généralement, vous interrogez la sortie d’Azure PowerShell avec l’applet de commande Select-Object. Une sortie peut être filtrée avec Where-Object.

Sélectionner des propriétés simples

Dans le format de tableau par défaut, les applets de commande Azure PowerShell n’affichent pas toutes les propriétés disponibles. Vous pouvez obtenir toutes les propriétés en utilisant l’applet de commande Format-List ou en utilisant le pipe pour envoyer la sortie à 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

Une fois que vous connaissez les noms des propriétés qui vous intéressent, vous pouvez les utiliser avec Select-Object pour les obtenir directement :

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

La sortie obtenue avec Select-Object est toujours formatée pour afficher les informations demandées. Pour en savoir plus sur l’utilisation du formatage avec la requête de résultats de cmdlet, consultez Formater une sortie de cmdlet Azure PowerShell.

Sélectionner des propriétés imbriquées

Certaines propriétés dans la sortie de cmdlet Azure PowerShell utilisent des objets imbriqués, comme la propriété StorageProfile de la sortie Get-AzVM. Pour obtenir une valeur d’une propriété imbriquée, renseignez un nom d’affichage et le chemin d’accès complet à la valeur que vous souhaitez inspecter dans un argument de dictionnaire dans Select-Object :

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

Chaque argument de dictionnaire sélectionne une propriété de l’objet. La propriété à extraire doit faire partie d’une expression.

Filtrer les résultats

La cmdlet Where-Object vous permet de filtrer les résultats selon la valeur de propriété de votre choix, y compris des propriétés imbriquées. L’exemple suivant montre comment utiliser Where-Object pour trouver les machines virtuelles dans un groupe de ressources.

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

Vous pouvez diriger les résultats de Select-Object et Where-Object l’un vers l’autre. À des fins de performances, nous vous recommandons de toujours placer l’opération Where-Object avant 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