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