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
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