Partager via


Interroger la sortie d’Azure PowerShell

Les résultats de chaque applet de commande Azure PowerShell sont un objet Azure PowerShell. Même les applets de commande qui ne sont pas explicitement Get- opérations peuvent retourner une valeur pouvant être inspectée, pour fournir des informations sur une ressource créée ou modifiée. Bien que la plupart des applets de commande retournent un seul objet, certains retournent un tableau qui doit être itéré.

En règle générale, vous interrogez la sortie d’Azure PowerShell avec l’applet de commande Select-Object . On peut filtrer la sortie avec Where-Object .

Sélectionner des propriétés simples

Au format de tableau par défaut, les applets de commande Azure PowerShell n’affichent pas toutes leurs 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 utiliser ces noms de propriétés 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 de l’utilisation de Select-Object est toujours mise en forme 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 de la sortie d’applet de commande Azure PowerShell utilisent des objets imbriqués, comme la propriété StorageProfile de la sortie Get-AzVM. Pour obtenir une valeur à partir d’une propriété imbriquée, fournissez un nom d'affichage et le chemin d’accès complet à la valeur que vous souhaitez inspecter en tant qu'argument de dictionnaire pour 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é dans l’objet. La propriété à extraire doit faire partie d’une expression.

Filtrer les résultats

L’applet de commande Where-Object vous permet de filtrer le résultat en fonction de n’importe quelle valeur de propriété, y compris les propriétés imbriquées. L’exemple suivant montre comment utiliser Where-Object pour rechercher les machines virtuelles Linux 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 rediriger les résultats de Select-Object vers Where-Object. À des fins de performances, il est toujours recommandé de mettre l’opération de 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