Module PowerShell Hyper-V : Faire plus de choses

Si vous utilisez la plateforme de virtualisation Hyper-V de Microsoft pour exécuter des machines virtuelles, vous êtes probablement familier avec l’utilisation du Gestionnaire Hyper-V. Mais saviez-vous que vous pouvez accomplir davantage en moins de temps avec le module PowerShell Hyper-V ?

Dans ce tutoriel, vous allez apprendre à gérer les machines virtuelles Hyper-V avec PowerShell, notamment la création, la suppression et vous allez également aborder les instantanés de machine virtuelle !

Prérequis

Pour ce tutoriel, vous aurez besoin des éléments suivants :

  • A Windows client to connect to a remote Hyper-V host. This tutorial uses Windows 10 Pro.
  • A Hyper-V host with PowerShell Remoting enabled. The tutorial’s Hyper-V host is named HYPER and is in a workgroup but an Active-Directory joined client and host will work as well.
  • A user account on the Hyper-V host in the local administrators group or in the Hyper-V Administrators group. This tutorial will use an account called localadmin.

Connexion à un hôte Hyper-V distant

Pour travailler avec Hyper-V sur PowerShell, vous devez pouvoir communiquer avec l’hôte Hyper-V d’une manière ou d’une autre. Vous pouvez le faire localement en exécutant les cmdlets PowerShell Hyper-V en fournissant le nom de l’hôte Hyper-V, ou vous pouvez utiliser l’accès distant PowerShell pour vous connecter à l’hôte Hyper-V lui-même.

Dans ce tutoriel, vous établirez une connexion persistante à l’hôte Hyper-V et exécuterez les commandes sur l’hôte Hyper-V lui-même.

1. Ouvrez PowerShell sur votre ordinateur local.

2. Exécutez la cmdlet Enter-PSSession en fournissant le nom d’hôte de votre hôte distant Hyper-V pour le paramètre ComputerName. Cette action crée une session interactive et vous permet d’exécuter des commandes de manière interactive sur l’hôte distant Hyper-V.

Enter-PSSession -ComputerName HYPER -Credential (Get-Credential)

Si votre client et l’hôte Hyper-V font partie du même domaine Active Directory, vous n’avez pas besoin d’utiliser le paramètre Credential.

3. Vous serez alors invité à fournir un nom d’utilisateur et un mot de passe pour vous connecter à l’hôte Hyper-V. Ce nom d’utilisateur et ce mot de passe seront un utilisateur administratif local sur l’hôte distant. Une fois connecté, vous devriez voir que votre invite PowerShell a changé pour afficher le nom d’hôte de l’hôte Hyper-V.

Vous êtes maintenant prêt à commencer à exécuter des commandes!

Création de machines virtuelles Hyper-V avec PowerShell

En supposant que vous soyez maintenant connecté à votre hôte Hyper-V via PowerShell Remoting, commençons à exécuter des commandes en créant une machine virtuelle Hyper-V.

Création d’une machine virtuelle simple

Pendant votre session PSRemoting connectée à l’hôte distant Hyper-V:

Exécutez la cmdlet New-VM pour créer une nouvelle machine virtuelle. Lors de la création d’une machine virtuelle avec la cmdlet New-VM, vous avez de nombreuses options différentes pour choisir comment la créer.

1. Dans cet exemple ci-dessous, le tutoriel crée une machine virtuelle avec:

  • A name of MyVM (HYPER)
  • 512 Mo de RAM (MemoryStartupBytes)
New-VM -Name "HYPER" -MemoryStartupBytes 512MB
New VM named “HYPER”

Création d’une VM basée sur d’autres attributs de VM

Parfois, vous devez créer une VM avec des attributs similaires à une autre VM. Vous pouvez le faire mais attribuez divers attributs de VM à des variables puis utilisez ces variables lors de la création de la nouvelle VM. Comme exemple :

1. Exécutez Get-VM pour interroger les attributs d’une VM existante en attribuant la sortie à une variable comme indiqué ci-dessous.

$VMold = Get-VM "HYPER_old"

2. Exécutez la cmdlet Get-VMMemory en fournissant le nom de la VM pour recueillir des attributs (dans ce cas, la mémoire), et assignez la valeur de mémoire à une variable.

$memory = (Get-VMMemory -VMName $VMold.name).Startup

3. Ensuite, créez une nouvelle VM avec la cmdlet New-VM en fournissant le Nom, la génération de VM (Generation) en utilisant la propriété Generation de l’autre VM, et la quantité de mémoire obtenue de l’autre VM.

New-VM -Name "newVM" -Generation $VMold.Generation -MemoryStartupBytes $memory
New VM created from Old existing VM

Lister les VM existantes avec PowerShell

Maintenant que vous avez créé au moins deux VMs sur l’hôte Hyper-V, explorons comment énumérer les VMs créées. Pour cela :

1. Exécutez la cmdlet Get-VM seule. Lorsque vous exécutez sans paramètres, Get-VM interroge l’hôte Hyper-V pour toutes les VMs existantes. Get-VM

Get-VM
Output of Get-VM run with no Parameters

2. Peut-être que vous souhaitez seulement chercher une seule VM. Dans ce cas, utilisez le paramètre -Name. La commande de code ci-dessous interroge Hyper-V pour la VM créée plus tôt nommée HYPER_old. Get-VM -Name HYPER_old

Get-VM -Name HYPER_old
Output of Get-VM run with the -Name Parameter

Ensuite, peut-être que vous avez besoin de trouver toutes les VMs qui sont dans un état spécifique State. Pas de problème. Pour faire cela, exécutez Get-VM, qui interroge toutes les VMs mais dirigez la sortie vers la cmdlet Where-Object.

Dans l’exemple ci-dessous, le pipe ‘|’ limite la sortie de Get-VM uniquement aux objets VM avec un État de Running. Get-VM -Nom HYPER_old | Where-Object {$_.State -eq 'Running'}

Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}
Output of Get-VM filtering out the VM with the state of Running

Démarrage et arrêt des VM

À ce moment, la VM créée précédemment est probablement arrêtée. Changeons cela en la démarrant et en apprenant ensuite comment arrêter également les VM.

Dans la session PowerShell de l’hôte Hyper-V distant :

1. Exécutez la commande Start-VM en lui fournissant le nom (Nom) de la VM créée précédemment avec le paramètre -Nom.

Start-VM -Name NewVM
The Start-VM command starting the VM named HYPER_old

Maintenant que la VM est démarrée, arrêtez-la en utilisant la commande Stop-VM en fournissant le nom de la VM avec le paramètre Nom.

Stop-VM -Name HYPER_old

Dès que vous exécutez la commande ci-dessus, vous verrez la VM s’arrêter comme le montre la capture d’écran ci-dessous ;

Stop-VM stopping the HYPER_old VM

Modification des VM Hyper-V

Les VM ne restent pas toujours les mêmes. Peut-être avez-vous besoin d’augmenter les ressources CPU, ou la VM manque constamment de mémoire. Dans ce cas, la commande Set-VM est votre alliée.

À titre d’exemple de modification des VM existantes, dans la session PowerShell de l’hôte Hyper-V distant :

Exécutez la commande Set-VM pour arrêter automatiquement la machine virtuelle HYPER_old qui est actuellement en cours d’exécution. Utilisez le paramètre Name pour spécifier la machine virtuelle que vous souhaitez définir et spécifiez Shutdown comme valeur pour le paramètre AutomaticStopAction afin de vous assurer que la machine virtuelle est automatiquement arrêtée correctement lorsque l’hôte Hyper-V est arrêté.

Set-VM -Name HYPER_old -AutomaticStopAction Shutdown

Enregistrement des machines virtuelles Hyper-V

Dans la session PowerShell de l’hôte Hyper-V distant, vous devrez peut-être enregistrer la machine virtuelle que vous créez pour conserver l’état de la mémoire de la machine virtuelle pour une utilisation ultérieure. Pour ce faire, utilisez la commande Save-VM avec le paramètre Name en spécifiant le nom de la machine virtuelle que vous souhaitez enregistrer.

Notez que la machine virtuelle que vous souhaitez enregistrer doit être dans un état d’exécution.

Save-VM -Name HYPER_old
Save-VM cmdlet saving HYPER_old VM state.

Gestion des points de contrôle des machines virtuelles Hyper-V

Si vous avez besoin de sauvegarder l’état actuel d’une machine virtuelle avant d’apporter des modifications ou de revenir en arrière sur les modifications de la machine virtuelle, vous devriez vous renseigner sur les points de contrôle. Les points de contrôle sont un moyen pratique de sauvegarder rapidement l’état du disque et de la mémoire de n’importe quelle machine virtuelle Hyper-V.

Sur votre hôte Hyper-V, exécutez la commande Checkpoint-VM, en fournissant le nom de la machine virtuelle à sauvegarder et un nom pour le point de contrôle.

Le nom du paramètre, SnapshotName, fait toujours référence à l’ancienne terminologie utilisée dans Hyper-V 2012. Un instantané est la même chose qu’un point de contrôle.

Checkpoint-VM -Name HYPER_old -SnapshotName MyVMSnapshot
Using Checkpoint-VM to create a Snapshot of HYPER_old VM called MyVMSnapshot

Une fois que vous avez créé un point de contrôle, vous pouvez ensuite utiliser la cmdlet Get-VMSnapshot pour récupérer tous les instantanés stockés sur l’hôte Hyper-V. Vous pouvez voir ci-dessous que la machine virtuelle HYPER_old a trois points de contrôle.

Get-VMSnapshot -VMName HYPER_old
Retrieves all the Snapshots stored for HYPER_old VM

Conclusion

Si vous avez suivi toutes les démonstrations de ce tutoriel, vous êtes bien parti pour gérer les machines virtuelles Hyper-V avec PowerShell. Vous devriez maintenant avoir les connaissances nécessaires pour gérer 1, 10, voire 100 machines virtuelles!

Quels types de tâches pensez-vous pouvoir automatiser maintenant avec PowerShell et Hyper-V ?

Source:
https://adamtheautomator.com/hyper-v-powershell/