Comment obtenir l’état d’une VM Azure avec PowerShell ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons voir comment une simple commande PowerShell peut nous permettre d'obtenir l'état d'une VM Azure, afin de savoir si elle est en cours d'exécution, arrêtée, voire même arrêtée et libérée.
Pour obtenir l'état de la machine virtuelle, il faut interagir directement avec le tenant et la souscription Azure où se situe vos ressources Cloud.
II. Utilisation de Get-AzVM
A. Comment utiliser Get-AzVM ?
La commande Get-AzVM doit être utilisée pour obtenir l'état d'une machine virtuelle Azure en ligne de commande, à l'aide de PowerShell. Cette commande est accessible directement à partir d'Azure Cloud Shell (avec un navigateur sur le portail Azure, voire même depuis Windows Terminal), d'une console PowerShell ou de votre éditeur de code préféré.
Pour une utilisation en local, via une console Windows PowerShell par exemple, il faudra au préalable installer le module "Az.Compute" de PowerShell dont fait partie cette commande.
Install-Module -Name Az.Compute
Ensuite, il faut établir une connexion au tenant Azure et s'authentifier afin d'avoir accès aux différentes ressources. Plusieurs façons de faire, la plus simple étant de saisir les identifiants dans un navigateur :
Connect-AzAccount
Si vous souhaitez plus d'informations sur les différentes méthodes de connexion, vous pouvez lire ce tutoriel :
B. Récupérer le statut d'une VM avec Get-AzVM
Donc, une fois que la connexion est établie, on peut requêter notre tenant pour obtenir l'état de la machine virtuelle avec Get-AzVM. Nous pouvons essayer de récupérer l'état de la VM nommée "SRV-WSUS" présente sur mon tenant Azure. Pour obtenir l'information, il suffit de spécifier le nom de la VM et d'ajouter le paramètre -Status.
Get-AzVM -Name "SRV-WSUS" -Status
Ici, la commande retourne une colonne nommée "PowerState" avec la valeur "VM running". Nous pouvons en déduire que la VM est en cours d'exécution.
La valeur pourrait être différente :
- VM deallocated : signifie que la VM est arrêtée et libérée
- VM stopped : signifie que la VM est arrêtée (et non libérée)
Si l'on ne précise pas le nom d'une machine virtuelle, on peut obtenir le statut de toutes les VM :
Get-AzVM -Status
Il est également possible de filtrer par région Azure (ou par groupe de ressources), sans oublier à chaque fois le paramètre -Status afin d'avoir la colonne "PowerState" :
Get-AzVM -Location francecentral -Status
Je vais terminer cet article par un dernier exemple : comment obtenir la liste de toutes les VM Azure éteintes ? Tout simplement, en ajoutant un filtre sur la propriété PowerState, comme ceci :
Get-AzVM -Status | Where{ $_.PowerState -eq "VM Stopped" }
Bien sûr, vous pouvez modifier la valeur du filtre pour obtenir la liste des machines virtuelles arrêtées et libérées, par exemple. Vous n'oublierez pas de déconnecter la session Azure après avoir joué avec PowerShell :
Disconnect-AzAccount
Pour plus d'informations sur la commande Get-AzVM :