La gestion des environnements Hyper-V peut être une tâche difficile. Ainsi, vous avez besoin d’un outil de gestion puissant pour configurer et contrôler votre infrastructure virtuelle à partir d’une console centrale. En plus de l’interface utilisateur graphique, Hyper-V fournit une interface en ligne de commande à l’aide de PowerShell pour la gestion de Hyper-V.
Dans cet article de blog, nous décrivons comment fonctionne PowerShell, quels sont les commandes PowerShell Hyper-V qui peuvent améliorer les performances des machines virtuelles (VM) et comment cet outil CLI peut considérablement simplifier le processus de gestion de Hyper-V.
Qu’est-ce que PowerShell?
PowerShell est un cadre d’automatisation des tâches et de gestion de la configuration développé par Microsoft, qui comprend une interface en ligne de commande et un langage de script associé construit sur le Framework .NET et .NET Core.
Les commandes PowerShell, également appelées cmdlets, peuvent être utilisées pour automatiser diverses tâches en organisant plusieurs cmdlets dans un seul script PowerShell. Microsoft a développé plus d’une centaine de commandes PowerShell de base qui peuvent être utilisées pour effectuer des tâches complexes ainsi que des tâches basiques.
Que peut faire PowerShell?
PowerShell peut aider les administrateurs Hyper-V à automatiser rapidement des tâches de gestion des systèmes d’exploitation (Linux, macOS et Windows) et des processus associés. Contrairement aux outils GUI, PowerShell vous permet de gérer l’ensemble du système en n’utilisant que la ligne de commande.
De plus, vous pouvez enregistrer les commandes PowerShell Hyper-V requises dans un fichier texte (avec l’extension .ps1) puis exécuter ce script pour effectuer certaines tâches. De plus, vous pouvez planifier l’exécution de scripts PowerShell à un moment donné en utilisant le Planificateur de tâches.
Comment ouvrir PowerShell
Il existe plusieurs façons d’exécuter PowerShell dans Hyper-V. Une façon facile d’accéder à PowerShell est de se connecter directement à un serveur Hyper-V et de le lancer à partir de là. Pour se connecter à distance à un hôte Hyper-V, nous devons nous assurer que le Bureau à distance est activé. Une fois le Bureau à distance activé, nous pouvons utiliser l’utilitaire Bureau à distance et nous connecter à distance au serveur comme nous le ferions avec n’importe quel interface graphique de serveur Windows.
Ouverture de PowerShell depuis l’interface graphique
Pour ouvrir PowerShell dans un système d’exploitation basé sur une interface graphique, suivez ces étapes:
- Vous devez cliquer sur Démarrer et taper PowerShell dans la barre de recherche.
- Faites un clic droit sur l’icône PowerShell et sélectionnez Exécuter en tant qu’administrateur pour ouvrir PowerShell en mode élevé.
Ouverture de PowerShell à partir de la ligne de commande
Pour exécuter PowerShell si vous utilisez Windows Server Core ou Hyper-V Server, suivez ces étapes:
- Tapez PowerShell dans l’invite de commande et appuyez sur Entrée.
- A Windows PowerShell session should start automatically in the Command Prompt window. A PS prefix is then added to the command prompt to indicate that you have started a Windows PowerShell session.
- Une fois dans PowerShell, vous pouvez utiliser des commandes PowerShell spécifiques à Hyper-V, que nous couvrons ci-dessous dans cet article.
Paramètres distants
Pour vérifier les paramètres du Bureau à distance dans Windows Server Core ou Hyper-V Server, vous pouvez lancer l’utilitaire sconfig si ce n’est pas déjà fait et le configurer en utilisant l’option 7. De plus, une fois connecté à distance à l’hôte Hyper-V, vous pouvez utiliser l’option 15 pour Quitter pour passer à la ligne de commande.
Une fois là, vous êtes dans un environnement cmd.exe régulier – pas PowerShell. Pour lancer un environnement PowerShell, tapez simplement powershell dans la ligne de commande.
Powershell à distance
En utilisant PowerShell, vous pouvez également interagir à distance avec Hyper-V. En d’autres termes, vous pouvez exécuter à distance des commandes PowerShell sur l’hôte Hyper-V sans établir de connexion Bureau à distance.
À partir de la station de travail d’administration sur laquelle nous avons chargé les outils de gestion Hyper-V, nous pouvons exécuter nos commandlets Hyper-V. Tout d’abord, nous devons installer les outils Hyper-V, y compris ces commandlets (cmdlets).
Install-WindowsFeature RSAT-Hyper-V-Tools
Une fois les outils chargés, nous pouvons exécuter les mêmes types de commandes en utilisant le paramètre -computername pointant vers notre hôte Hyper-V comme dans la capture d’écran ci-dessous. Nous passons le nom de notre hôte à la commande get-vm de PowerShell.
12 Commandes PowerShell Hyper-V Essentielles
Il existe un certain nombre de commandes PowerShell Hyper-V efficaces qui peuvent faciliter le processus de gestion de Hyper-V de manière simple et facile. Voyons comment vous pouvez utiliser différentes commandes PowerShell Hyper-V.
Get-Command
Commençons par une commande PowerShell Hyper-V utile pour les utilisateurs qui découvrent PowerShell et ne savent pas quelles cmdlets utiliser et comment. En exécutant la cmdlet Get-Command, vous pouvez voir la liste complète de toutes les cmdlets disponibles (commandes Windows PowerShell), fonctions et alias installés sur l’ordinateur.
Cependant, si vous souhaitez affiner votre recherche et obtenir la liste des commandes PowerShell Hyper-V qui correspondent à des critères spécifiques, vous pouvez utiliser la commande Get-Command *-VM pour trouver la liste des commandes qui vous permettent de contrôler et configurer les VM.
En changeant le paramètre VM en VHD, vous pouvez obtenir la liste complète des cmdlets utilisés pour gérer les disques durs virtuels. Ainsi, vous pouvez essayer différentes combinaisons de paramètres de recherche pour obtenir les résultats dont vous avez besoin.
Get-Help
Une fois que vous avez décidé quelle commande PowerShell Hyper-V vous souhaitez utiliser, vous pouvez en apprendre davantage sur cette cmdlet. À cette fin, vous pouvez utiliser la commande Get-Help. Par exemple, pour en savoir plus sur la cmdlet Get-VM, tapez ce qui suit:
Get-Help Get-VM
Get-VM
La commande PowerShell Get-VM vous permet de voir toutes les VM disponibles sur un ou plusieurs hôtes Hyper-V. Pour voir toutes les VM sur l’hôte Hyper-V local, vous devriez exécuter la cmdlet Get-VM PowerShell.
Sur l’écran PowerShell, vous pouvez voir la liste des VM disponibles, y compris leur nom, état, utilisation du CPU, mémoire attribuée, temps de fonctionnement, statut et version.
Start-VM
Cette cmdlet PowerShell start VM particulière vous aide à démarrer une VM. À cette fin, exécutez la commande PowerShell Hyper-V suivante:
Start-VM -Name 'Windows Server 2016'
En conséquence, la VM nommée Windows Server 2016 est démarrée sur votre hôte Hyper-V local. Vérifions maintenant si la VM a réellement démarré en exécutant la cmdlet Get-VM.
De plus, vous pouvez utiliser une version modifiée de la cmdlet Start-VM PowerShell pour démarrer les VM uniquement si leur nom commence par Hyper-V:
Start-VM -Name Hyper-V*
Comme vous pouvez le voir, la VM nommée Hyper-V Server Desktop a démarré avec succès. Cependant, une autre VM (Hyper-V Server 2012) était déjà en état de fonctionnement et PowerShell vous en informe.
Stop-VM
La cmdlet Stop-VM vous permet d’arrêter ou d’éteindre une VM. À cette fin, vous pouvez exécuter la cmdlet suivante:
Stop-VM -Name 'Windows Server 2016'
Comme vous pouvez le voir, la VM sélectionnée a été arrêtée avec succès via le système d’exploitation invité.
Un autre exemple est que vous pouvez éteindre les VM dont les noms commencent par Hyper-V:
Stop-VM -Name Hyper-V* -TurnOff
Si vous constatez que votre VM ne répond pas, vous pouvez forcer son arrêt. Pour ce faire, exécutez la cmdlet PowerShell suivante:
Stop-VM -Name 'Windows Server 2016' -Force
Remarquez que l’arrêt forcé est similaire à débrancher l’alimentation d’une machine physique, ce qui peut entraîner une perte de données d’application non enregistrées. Dans ce cas, il est recommandé de sauvegarder la VM afin d’éviter toute perte de données potentielle. À cette fin, vous devez exécuter la cmdlet Save-VM, qui est équivalente à l’hibernation d’un ordinateur physique:
Save-VM -Name 'Windows Server 2016'
Si vous souhaitez sauvegarder les VM dont les noms commencent par Hyper-V, exécutez la commande PowerShell Hyper-V suivante:
Get-VM -Name Hyper-V* | Save-VM
Checkpoint-VM
Le cmdlet Checkpoint-VM vous aide à créer un point de contrôle VM Hyper-V (également appelé instantané Hyper-V). Exécutez le cmdlet suivant pour créer un point de contrôle nommé Update1 de la VM spécifique (Windows Server 2016):
Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1
Pour vérifier que la VM a été créée avec succès, utilisez la commande PowerShell Hyper-V suivante:
Get-VMSnapshot -VMName 'Windows Server 2016'
En revanche, si vous souhaitez supprimer certains instantanés Hyper-V, vous pouvez utiliser le cmdlet Remove-VMSnapshot. Par exemple, si nous voulons supprimer tous les instantanés VM dont les noms commencent par Testing, nous devrions exécuter le cmdlet suivant:
Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*
La capture d’écran ci-dessus illustre l’ensemble du processus de suppression des instantanés Hyper-V sélectionnés.
Test-VHD
Cette commande PowerShell Hyper-V est destinée à vérifier que le fichier de disque dur virtuel existe réellement et peut être utilisé pour le déploiement Hyper-V. Ce cmdlet est le suivant:
Test-VHD -Path C:\Testing.vhd
Dans le cas où le chemin VHD est valide, vous verriez la sortie suivante sur votre écran :
Pour en savoir plus sur la gestion des disques durs virtuels en utilisant les cmdlets PowerShell, nous vous recommandons de lire notre article de blog sur les bases de travail avec les fichiers VHD et VHDX de Hyper-V.
Measure-VM
Cette commande PowerShell Hyper-V vous permet de recueillir des données d’utilisation des ressources pour une machine virtuelle spécifique. Par exemple, exécutez la cmdlet suivante pour en savoir plus sur l’utilisation du CPU, de la RAM, de la capacité du disque et du trafic réseau pour la VM nommée Windows Server 2016 :
Measure-VM -VMName 'Windows Server 2016'
Remarquez que la cmdlet Measure-VM ne peut rapporter les données requises qu’après que le comptage des ressources a été activé sur une VM. Pour activer le comptage des ressources, utilisez la commande PowerShell Hyper-V suivante :
Enable-VMResourceMetering -VMName 'Windows Server 2016'
Get-VMNetworkAdapter
Une autre cmdlet utile PowerShell est Get-VMNetworkAdapter, qui vous permet d’identifier les adaptateurs réseau virtuels de la VM sélectionnée. Par exemple, si vous souhaitez trouver des adaptateurs réseau virtuels de toutes les VM ainsi que du système d’exploitation de gestion, vous devriez exécuter la commande PowerShell Hyper-V suivante :
Get-VMNetworkAdapter –All
Si tout est correct, vous devriez voir les informations suivantes dans votre console PowerShell :
À l’aide des commandes PowerShell Hyper-V, vous pouvez effectuer diverses tâches simples ainsi que complexes avec vos adaptateurs réseau Hyper-V. Consultez notre guide sur les cmdlets qui peuvent vous aider à gérer et configurer des adaptateurs réseau virtuels dans votre environnement Hyper-V.
Update-VMVersion
PowerShell dispose d’une cmdlet qui vous permet de mettre à jour la version de la machine virtuelle sélectionnée :
Update-VMVersion -Name 'TestVM'
Après avoir exécuté la commande PowerShell Hyper-V, la machine virtuelle nommée TestVM peut être mise à jour vers la version actuelle de la machine virtuelle.
Get-Process
Cette commande PowerShell Hyper-V peut vous aider à voir tous les processus actuels sur votre ordinateur local. Après avoir exécuté la cmdlet Get-Process, vous pouvez obtenir les informations suivantes sur votre écran :
Ce tableau comprend des informations sur :
- le nombre de handles que le processus a ouverts
- la quantité de mémoire non paginée utilisée par le processus
- la quantité de mémoire paginée utilisée par le processus
- la taille de l’ensemble de travail du processus
- la quantité de mémoire virtuelle utilisée par le processus
- la quantité de temps processeur allouée à tous les processeurs
- l’ID du processus
- le nom du processus
Pour réduire la recherche et trouver un processus spécifique, vous devez taper le nom ou l’ID du processus. Par exemple, si vous souhaitez savoir comment Microsoft Word fonctionne actuellement, vous devez parcourir la liste de tous les processus en cours d’exécution et trouver la ligne contenant les informations sur Microsoft Word (c’est-à-dire WinWord), y compris son ID de processus. En utilisant l’ID de processus, vous pouvez exécuter la cmdlet suivante pour obtenir les données nécessaires:
Get-Process -ID 8892
De plus, les données sur les processus WinWord actuels peuvent être présentées dans un autre format, c’est-à-dire sous forme de liste de propriétés. Exécutez cette cmdlet pour obtenir une sortie plus détaillée:
Get-Process WINWORD | Format-List *
Après avoir obtenu les données du processus, vous pouvez exécuter les cmdlets suivantes:
Stop-Process
vous permet d’arrêter un ou plusieurs processus en cours d’exécution.Wait-Process
vous permet d’attendre que un ou plusieurs processus en cours d’exécution soient arrêtés avant de permettre toute autre entrée.Start-Process
vous permet de démarrer un ou plusieurs processus sur l’ordinateur local.Debug-Process
vous permet de joindre un débogueur à un ou plusieurs processus en cours d’exécution sur l’ordinateur local.
Par exemple, si vous voulez lancer l’application Notepad depuis PowerShell, vous devez exécuter la cmdlet suivante:
Start-Process -FilePath "notepad.exe"
Un autre exemple est lorsque vous avez ouvert PowerShell en mode « normal », mais que vous devez exécuter PowerShell en mode élevé pour obtenir l’accès aux droits administratifs. Dans un tel cas, exécutez la commande PowerShell Hyper-V suivante :
Start-Process -FilePath "powershell" -Verb RunAs
D’autre part, si l’un des processus en cours d’exécution cesse de répondre, vous pouvez exécuter la cmdlet Stop-Process pour arrêter l’application défaillante :
Stop-Process -Name "notepad"
Dans ce cas, toutes les instances de l’application Notepad sur l’ordinateur local sont arrêtées.
Chaque instance de Notepad a son propre ID de processus. Si vous voulez arrêter une instance particulière de Notepad, vous devriez utiliser le paramètre ID dans la cmdlet Stop-Process. À cette fin, vous devez d’abord exécuter la cmdlet Get-Process, trouver les processus actifs requis et identifier l’ID de processus que vous souhaitez arrêter.
Par exemple, vous pouvez arrêter le processus Notepad spécifique en identifiant son ID de processus et en exécutant la commande PowerShell Hyper-V suivante :
Stop-Process -ID 5052
Par conséquent, seul le processus Notepad sélectionné est arrêté.
Ces commandes PowerShell vous permettent de détecter un processus qui consomme des ressources indésirables et réduit les performances de Hyper-V afin de mettre fin à ce processus.
Where-Object
Ce commandement PowerShell Hyper-V vous permet de filtrer les objets de la pipeline et de trouver les données exactes dont vous avez besoin. Dans ce cas, vous devez créer un script PowerShell dans lequel vous spécifiez quels objets peuvent être transmis le long de la pipeline. En utilisant divers critères de recherche, vous pouvez trouver n’importe quel objet sur l’ordinateur local.
Par exemple, si vous souhaitez localiser les processus qui se sont arrêtés, utilisez cette commande :
Get-Service | Where-Object {$_.Status -eq 'Stopped'}
Un autre exemple d’utilisation de la commande Where-Object est lorsque vous souhaitez trouver une commande spécifique. La commande PowerShell Hyper-V suivante peut vous aider à trouver toutes les commandes qui commencent par Wait:
Get-Command | Where-Object {$_.Name -like '*wait*'}
La prochaine commande Where-Object peut vous aider à trouver un processus particulier uniquement en fonction de son nom. En exécutant la commande suivante, vous pouvez obtenir une liste de tous les processus dont les noms commencent par sys:
Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}
Comment créer une machine virtuelle Hyper-V en utilisant PowerShell
Une des fonctionnalités intégrées puissantes de Hyper-V est de permettre l’utilisation de PowerShell pour les opérations de gestion. Parmi les nombreuses choses que nous pouvons faire avec PowerShell dans Hyper-V, il y a la création de machines virtuelles. Regardons un ensemble de commandes PowerShell Hyper-V pour créer de nouvelles VM.
Commandes PowerShell pour créer une nouvelle VM
Pour créer une nouvelle VM de génération 2 avec un tout nouveau disque dur VHDX de 60 Go et le connecter à un commutateur virtuel spécifique (dans ce cas, « ExternalSwitch »), exécutez les commandes PowerShell suivantes sur votre hôte Hyper-V.
-
Création d’une VM :
new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:\hyper-v\disques durs virtuels\WSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch"
-
Pour ajouter un lecteur DVD avec une image ISO à démarrer, nous pouvons exécuter des commandes supplémentaires :
Ajouter-vmscsicontroller -nomdevm WSTEST
Ajouter-vmdvddrive -nomdevm WSTEST -numeroducontroleur 1 -emplacementducontroleur 0 -chemin D:\ISO\mon.iso
-
Si nous voulons créer un disque de taille fixe et le rattacher à notre VM, nous pouvons exécuter ce qui suit pour créer un VHDX de taille fixe et le rattacher à notre VM :
nouveau-vhd -chemin "d:\hyper-v\disques durs virtuels.wstest.vhdx" -tailleoctets 60Go -fixe
ajouter-disquedurvm -nomvm WSTEST -chemin "d:\hyper-v\disques durs virtuels\wstest.vhdx"
Conclusion
PowerShell peut sembler intimidant au début, mais une fois que vous avez appris à travailler avec lui, vous pouvez rapidement découvrir comment utiliser les commandes PowerShell Hyper-V et rationaliser l’administration dans votre environnement Hyper-V. Gardez simplement à l’esprit que quel que soit l’outil que vous utilisez pour gérer vos VM, vous devez créer des sauvegardes pour éviter la perte de données et les temps d’arrêt.
NAKIVO Backup & Replication est une solution de protection des données fiable et puissante, qui peut vous aider à protéger les environnements VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows et Microsoft 365.
Source:
https://www.nakivo.com/blog/essential-hyper-v-powershell-commands/