Capturer des vidéos à partir de machines virtuelles Hyper-V avec PowerShell

  • PowerShell fournit des applets de commande complètes pour la création, la gestion, l’exportation et l’importation de machines virtuelles Hyper-V avec contrôle à distance.
  • L'automatisation avec filtrage et pipelines permet des opérations en masse et des métriques détaillées par machine virtuelle.
  • Le réseau, le stockage et les ressources sont ajustés avec New-VMSwitch, Add-VMNetworkAdapter, Set-VMMemory et Set-VMProcessor.
  • Les scripts de reporting et les solutions de sauvegarde complètent les instantanés et les exportations pour protéger votre environnement.

Gérer Hyper-V avec PowerShell

Si vous travaillez avec la virtualisation sous Windows, vous serez tôt ou tard amené à automatiser des tâches. PowerShell et Hyper-V sont parfaitement adaptés : du démarrage à l’arrêt des machines virtuelles, en passant par leur exportation, la mesure des ressources ou la création de réseaux virtuels, tout peut être orchestré sans ouvrir la console graphique.

Dans les lignes qui suivent, nous verrons, à l'aide d'exemples et de bonnes pratiques, comment gérer efficacement Hyper-V avec PowerShell . Vous découvrirez les commandes essentielles, la création et la configuration de machines virtuelles, l'exportation et l'importation, le filtrage en masse, les métriques, la gestion du réseau et du stockage, ainsi que des scripts utiles pour générer des rapports sur l'état de votre plateforme et des options de sauvegarde pour une plus grande sérénité.

Qu’est-ce que PowerShell et pourquoi l’utiliser avec Hyper-V ?

PowerShell est le framework d'automatisation et de script de Microsoft basé sur .NET. Il combine un interpréteur de commandes avec un langage de script puissant , idéal pour l'administration sous Windows, macOS et Linux.

Ses commandes (cmdlets) permettent d'enchaîner des actions et de créer des scripts réutilisables. Microsoft fournit des centaines de cmdlets de base et, grâce au module Hyper-V, vous disposez de tout le nécessaire pour gérer les hôtes, les machines virtuelles, le réseau et le stockage depuis la console.

Qu'est-ce que PowerShell

Comment ouvrir et utiliser PowerShell sur les hôtes Hyper-V

Si l'hôte dispose d'une interface graphique, ouvrez le menu Démarrer, recherchez PowerShell et exécutez « Exécuter en tant qu'administrateur ». Sur les installations Server Core ou Hyper-V Server, tapez powershell dans l'invite de commandes pour démarrer une session PowerShell.

Pour accéder à distance via le Bureau à distance sur Server Core, utilisez la commande sconfig (option 7). Si vous souhaitez revenir à la console, l'option 15 vous ramène à cmd.exe . N'oubliez pas d'activer le protocole RDP sur l'hôte auquel vous vous connecterez.

L'administration à distance sans RDP est encore plus pratique : installez les outils sur votre poste de travail avec la commande `Install-WindowsFeature RSAT-Hyper-V-Tools` et ajoutez `-ComputerName` aux cmdlets (`Get-VM`, `Start-VM`, etc.) pour opérer sur l'hôte cible. Vous pourrez ainsi gérer plusieurs hôtes sans avoir à basculer entre les bureaux distants.

Applis de commande Hyper‑V essentielles avec exemples

Lorsque vous ne vous souvenez plus d'une commande ou de sa syntaxe, consultez le catalogue. La commande Get-Command liste les cmdlets, fonctions et alias disponibles, et vous pouvez filtrer par modèle :

Get-Command -Module Hyper-V
Get-Command *-VM
Get-Command *-VHD*

Pour obtenir de l'aide, des exemples et des paramètres, Get-Help clarifie la syntaxe et présente même des exemples pratiques :

Get-Help Get-VM

Inventaire et cycle de vie des machines virtuelles

Pour afficher les machines virtuelles sur l'hôte local ou distant, la première étape consiste à utiliser la commande Get-VM :

Get-VM
Get-VM -ComputerName Server1

Démarrez des machines virtuelles ou des lots spécifiques. Vous pouvez utiliser des caractères génériques dans le nom :

Start-VM -Name 'Windows Server 2016'
Start-VM -Name 'Hyper-V*'

S'arrête correctement (ou s'arrête de force en cas de non-réponse). Stop-VM prend en charge les options -TurnOff et -Force pour les cas extrêmes, et Save-VM met l'ordinateur en hibernation.

Stop-VM -Name 'Windows Server 2016'
Stop-VM -Name 'Hyper-V*' -TurnOff
Stop-VM -Name 'Windows Server 2016' -Force
Save-VM -Name 'Windows Server 2016'
Get-VM -Name 'Hyper-V*' | Save-VM

Pour un arrêt propre depuis le système d'exploitation invité, Invoke-VMSHutdown est idéal lorsque l'intégration le permet :

Invoke-VMShutdown -VMName 'testvps' -Force

Points de contrôle (instantanés)

Les points de contrôle sont indispensables avant d'apporter des modifications critiques. Checkpoint-VM crée le point de contrôle et Get-VMSnapshot le vérifie.

Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName 'Update1'
Get-VMSnapshot -VMName 'Windows Server 2016'

Pour nettoyer les snapshots selon un modèle, utilisez un pipeline. `Remove-VMSnapshot` supprime les éléments que vous spécifiez :

Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name 'Testing*'

Disques virtuels (VHD/VHDX)

Vérifie les chemins d'accès aux fichiers et leur intégrité. Test-VHD confirme l'existence et la validité du disque dur virtuel (VHD).

Test-VHD -Path 'C:\Testing.vhd'

Pour créer ou attacher un disque dur virtuel (VHD), combinez les commandes New-VHD et Add-VMHardDiskDrive afin d'automatiser le processus. L'utilisation d'une taille fixe est recommandée pour les charges de travail exigeantes en termes de performances.

New-VHD -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx' -SizeBytes 60GB -Fixed
Add-VMHardDiskDrive -VMName 'WSTEST' -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx'

Métriques et réseau

Activez la mesure des ressources et vérifiez la consommation par machine virtuelle. La commande Enable-VMResourceMetering + Measure-VM vous fournit l'utilisation du processeur, de la RAM, du disque et du réseau.

Enable-VMResourceMetering -VMName 'Windows Server 2016'
Measure-VM -VMName 'Windows Server 2016'

Pour lister les adaptateurs virtuels, incluez l'interface d'administration. Get-VMNetworkAdapter inclut les machines virtuelles et l'hôte lui-même avec l'option -All :

Get-VMNetworkAdapter -All

Version de configuration, processus et filtrage

Après la mise à jour de l'hôte, la version de la machine virtuelle est mise à niveau si nécessaire. La commande Update-VMVersion effectue cette opération en toute sécurité.

Update-VMVersion -Name 'TestVM'

Pour diagnostiquer les goulots d'étranglement, utilisez les cmdlets de processus. Les cmdlets Get-Process, Stop-Process, Start-Process, Wait-Process et Debug-Process vous permettent de contrôler le processus.

Get-Process -Id 8892
Get-Process WINWORD | Format-List *
Start-Process -FilePath 'notepad.exe'
Start-Process -FilePath 'powershell' -Verb RunAs
Stop-Process -Name 'notepad'
Stop-Process -Id 5052

La cmdlet Where-Object permet de filtrer n'importe quelle collection. Utilisez-la avec des services, des cmdlets ou des processus pour ne conserver que les éléments pertinents.

Get-Service | Where-Object {$_.Status -eq 'Stopped'}
Get-Command | Where-Object {$_.Name -like '*wait*'}
Get-Process | Where-Object {$_.ProcessName -Match '^sys.*'}

Capturez des vidéos de machines virtuelles Hyper-V avec PowerShell

Créer et configurer des machines virtuelles avec PowerShell

Créer une machine virtuelle de génération 2 avec un nouveau disque dur virtuel (VHDX) et un réseau attribué se fait en une seule commande. `new-VM` permet de définir la mémoire, le disque, le chemin d'accès et le commutateur en une seule étape :

New-VM -Name 'WSTEST' -MemoryStartupBytes 2GB -Generation 2 \
  -NewVHDPath 'D:\hyper-v\virtual hard disks\WSTEST.vhdx' \
  -NewVHDSizeBytes 60GB -SwitchName 'ExternalSwitch'

Si vous avez besoin d'un lecteur DVD virtuel pour démarrer à partir d'une image ISO, ajoutez un contrôleur et un lecteur. Veillez à ce que le numéro et l'emplacement du contrôleur correspondent à la configuration de votre système.

Add-VMSCSIController -VMName 'WSTEST'
Add-VMDvdDrive -VMName 'WSTEST' -ControllerNumber 1 -ControllerLocation 0 -Path 'D:\ISO\my.iso'

Vous pouvez également préparer des disques fixes et les connecter. Les disques VHDX fixes réduisent la fragmentation et la latence dans les environnements d'E/S exigeants.

New-VHD -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx' -SizeBytes 60GB -Fixed
Add-VMHardDiskDrive -VMName 'WSTEST' -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx'

Pour les scénarios avec un disque dur virtuel (VHD) existant, spécifiez `-VHDPath` et, en cas d'administration à distance, ajoutez `-ComputerName` . La propriété `-BootDevice` vous permet de choisir entre le démarrage sur disque dur virtuel (VHD), sur image ISO ou sur le réseau.

New-VM -ComputerName 'Server1' -Name 'VM1' -MemoryStartupBytes 4GB \
  -BootDevice VHD -VHDPath '.\VMs\Win10.vhdx' -Path '.\VMData' \
  -Generation 2 -SwitchName 'ExternalSwitch'

Voici un exemple d'utilisation du « splatting » dans PowerShell ISE pour obtenir un code propre et reproductible. C'est idéal pour la création de modèles :

$VMName = 'VMNAME'
$VM = @{
  Name = $VMName
  MemoryStartupBytes = 2147483648
  Generation = 2
  NewVHDPath = "C:\\Virtual Machines\\$VMName\\$VMName.vhdx"
  NewVHDSizeBytes = 53687091200
  BootDevice = 'VHD'
  Path = "C:\\Virtual Machines\\$VMName"
  SwitchName = (Get-VMSwitch).Name
}
New-VM @VM

Administration avancée : mouvements, importations et exportations

Pour déplacer une machine virtuelle entre hôtes, Move-VM prend en charge le déplacement avec ou sans stockage et fonctionne parfaitement lorsque la source est sur SMB :

Move-VM -ComputerName 'Server1' -Name 'VM1' -DestinationHost 'Server2'
Move-VM -ComputerName 'Server1' -Name 'VM1' -DestinationHost 'Server2' \
  -IncludeStorage -DestinationStoragePath 'D:\VM_name'

L'exportation crée une copie complète (configuration, disques durs virtuels et instantanés). Export-VM est utile pour l'archivage, les tests ou les migrations ponctuelles.

Export-VM -ComputerName 'Server1' -Name 'VM1' -Path 'D:\'
Get-VM | Export-VM -Path 'C:\'

L'importation propose trois modes : Enregistrer sur place (fichiers et ID identiques), Restaurer (copie vers un nouveau répertoire en conservant l'ID) et Copier (copie avec un nouvel ID). Choisissez en fonction des conflits d'ID et de la cible.

# Registrar in situ (elimina antes la VM original con el mismo ID)
Get-VM 'DemoVM' | Remove-VM
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\DemoVM\\Virtual Machines\\{GUID}.vmcx'

# Restaurar a nuevas rutas, conservando ID
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\Hyper-V Server 2012\\Virtual Machines\\{GUID}.vmcx' \
  -Copy -VhdDestinationPath 'C:\\Program Files\\Imported VMs\\VHD Files' \
  -VirtualMachinePath 'C:\\Program Files\\Imported VMs\\VM Files'

# Copiar con nuevo ID (importable varias veces en el mismo host)
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\DemoVM\\Virtual Machines\\{GUID}.vmcx' \
  -Copy -GenerateNewId

Si vous travaillez avec Azure Local (Windows Server 2019/2022 et versions à partir de la 2311.2), l'administration à distance avec -ComputerName est la norme : l'inventaire, le démarrage/l'arrêt, les points de contrôle, l'importation/l'exportation et les déplacements sont tous exécutés depuis votre ordinateur d'administration.

CMD et PowerShell : commandes essentielles pour tout utilisateur Windows

Réseau, stockage et ressources : mémoire et CPU

Créez des commutateurs pour isoler ou connecter des machines virtuelles au réseau local. New-VMSwitch prend en charge les modes de bande passante et la QoS.

New-VMSwitch 'QoS Switch' -NetAdapterName 'Wired Ethernet Connection 3' -MinimumBandwidthMode Weight

Ajoutez des cartes réseau virtuelles aux machines virtuelles et connectez-les au commutateur correspondant. La commande Add-VMNetworkAdapter est votre alliée pour la mise en réseau des machines virtuelles.

Add-VMNetworkAdapter -ComputerName 'Server1' -VMName 'VM1' -Name 'Redmond NIC1'
Add-VMNetworkAdapter -ComputerName 'Server1' -VMName 'VM1' -SwitchName 'Network'

La mémoire dynamique optimise la densité sans perte de contrôle. La commande Set-VMMemory ajuste les valeurs minimales, de démarrage, maximales, la priorité et la taille du tampon.

Set-VMMemory -ComputerName 'Server1' -Name 'VM1' -DynamicMemoryEnabled $true \
  -MinimumBytes 64MB -StartupBytes 256MB -MaximumBytes 2GB -Priority 80 -Buffer 25

Attribuez des vCPU avec des limites et des réservations. La commande Set-VMProcessor définit le nombre, la réservation, le maximum et le poids relatif de chaque VM :

Set-VMProcessor -ComputerName 'Server1' -Name 'VM1' -Count 2 -Reserve 10 -Maximum 75 -RelativeWeight 200

Pour créer de nouveaux disques, New-VHD prend en charge les scénarios VHD/VHDX dynamiques ou statiques. Combinez-le avec Add-VMHardDiskDrive pour les attacher à la machine virtuelle souhaitée.

Opérations en masse et filtrage

L'affichage des commandes des modules Hyper-V sur une grille interactive est très utile. Out-GridView vous permet d'examiner les commandes et paramètres disponibles :

Get-Command -Module Hyper-V | Out-GridView

Pour les inventaires, filtrez par statut. La commande Where-Object vous permet de visualiser en un coup d'œil les machines virtuelles en cours d'exécution ou arrêtées.

Get-VM | Where-Object {$_.State -eq 'Running'}
Get-VM | Where-Object {$_.State -eq 'Off'}

Démarrez toutes les machines virtuelles éteintes ou arrêtez les machines virtuelles en cours d'exécution à l'aide de pipelines. Idéal pour les tâches planifiées.

Get-VM | Where-Object {$_.State -eq 'Off'} | Start-VM
Get-VM | Where-Object {$_.State -eq 'Running'} | Stop-VM

Renommer et nettoyer sont également simples. Les commandes Rename-VM et Remove-VM vous aident à réétiqueter et à supprimer les machines virtuelles (n'oubliez pas que Remove-VM ne supprime pas les disques durs virtuels) :

Rename-VM -ComputerName 'Server1' -Name 'VM1' -NewName 'VM2'
Get-VM -Name 'VM2'
Remove-VM -Name 'VM2'

Dans un cluster, supprimez des groupes entiers si nécessaire. La commande `Remove-ClusterGroup -RemoveResources` supprime la machine virtuelle et ses ressources de cluster.

Get-ClusterGroup
Remove-ClusterGroup -RemoveResources -Name 'VM1'

Surveillance et sauvegarde : scripts et outils

Pour auditer l'état de santé d'Hyper-V à l'aide de rapports HTML, le script de Serhat Akinci génère un rapport d'environnement complet pouvant être envoyé par e-mail. Téléchargez-le et consultez un exemple de résultat :

Lien de téléchargement · Exemple de rapport

Si vous utilisez Hyper-V Replica, le script Sangeeth surveille l'état de la réplication sur des nœuds individuels ou des clusters et génère un rapport HTML prêt à être distribué :

Télécharger Replication Health Mailer

En matière de protection des données, il existe des solutions conçues pour les machines virtuelles, telles que NAKIVO Backup & Replication (VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows et Microsoft 365) et Vinchin Backup & Recovery (Proxmox, VMware, Hyper-V, XenServer, XCP-ng, oVirt, RHV, etc.). Elles offrent une sauvegarde sans agent, une restauration instantanée et une migration V2V , et facilitent la mise en place de politiques et la planification centralisées afin de minimiser les risques.

Il est important de noter que les fonctions Export-VM et Import-VM constituent des solutions ponctuelles pour l'archivage, les tests et la restauration simple, mais ne remplacent pas une sauvegarde complète avec déduplication, chiffrement et compression . L'exportation nécessite davantage d'interventions manuelles et s'avère moins performante dans les environnements de grande taille.

Vous disposez désormais d'un guide pratique pour utiliser Hyper-V en ligne de commande : découverte des cmdlets, création et déplacement de machines virtuelles, mesure des ressources, optimisation du réseau et du stockage, filtrage en masse et rapports d'état . L'écosystème PowerShell vous offre rapidité et précision ; associé à des stratégies de copie et des scripts de surveillance efficaces, il vous permettra de disposer d'une plateforme robuste et évolutive.


Ajouter comme source préférée dans Google