Accueil > Hyper-V > quelques commandes utiles pour Hyper-V
Déc/1528

Bien que pour des raisons de facilités, on peut être tenté d’installer Hyper-V sur un Windows Server complet, les best-practices recommandent d’utiliser le mode Server Core. Le mode Server Core permet de limiter la surface d’attaque en terme de sécurité, le nombre de correctif à mettre mais aussi de limiter l’installation d’autres logiciel. Bien qu’il soit possible d’administrer l’hyperviseur à distance depuis une MMC d’un poste tierce (avec RSAT), il est nécessaire de connaitre les lignes de commandes qui vont bien (spécialement pour la configuration réseau), d’ou cet article.

Pour commencer

Ouvrir le console de configuration:

sconfig

Ouvrir une session PowerShell locale:

powershell

Ouvrir une session PowerShell distante depuis la session PowerShell locale (comme un ssh):

Enter-PSSession <computerName>

Rechercher une commande PowerShell (comme un help avec un grep):

Get-Command | select-string <commande>

Afficher l’aide d’un commande (comme un man):

Get-Help <commande>

Pour System Center, toutes les commandes ont la syntaxe:

[action]-sc[object]

Les premières commandes

Commandes sur les adapteurs réseaux:

get-netadapter

get-vmnetworkadapter -managementOS

get-vmnetworkadapter <VMname>

get-vmswitch

add-vmnetworkadapter -managementOS

set-vmnetworkadaptervlan

get-netadapteradvancedproperty

connect-vmnetworkadapter

disconnect-vmnetworkadapter

disable-VmNetworkAdapter

Commandes sur le teaming des adapteurs réseau:

get-netlbfoteam

get-netlbfotteammember

new-netlbfoteam

add-netlbfoteammember

Commandes de troubleshooting réseau:

get-netadapterstatus

netsh interface ipv4 show ipstats

netsh interface ipv4 show tcpstats

Voir les événements drivers. Pour les adapteurs 10GbE:

get-winevent -providername ixgbn

get-winevent -providername I*network*

Voir la liste des VMs sur un hôte:

get-VM

Avoir la liste détaillées des VMs sur un hôte:

get-VMsummary

Voir la liste des VMs de SCVMM:

get-scvirtualmachine

Opérations sur les VMs

Démarrer une VM:

start-VM -name <nomVM>

Arréter proprement une VM:

shutdown-VM -name <nomVM>

Forcer l’arret d’une VM:

stop-VM -force -name <nomVM>

Eteindre toutes les VMs

stop-VM *

Créer une VM basique (ajouter des paramètres pour spécifier sa config):

new-VM -name <nomVM>

Afficher la mémoire configurer des VMs sur un hôte (ainsi que la réservation et la limite):

get-Memory

Monter une image ISO dans une VM:

Add-VMDvdDrive -VMName <nomVM> –Path C:monImage.iso

Afficher les snapshots d’une VM:

Get-Snapshot –VMName <nomVM>

Prendre un Snapshot sur une VM:

Checkpoint-VM -Name <nomVM> -SnapshotName <nomSnap>

Supprimer tous les snapshots plus anciens que 30 jours:

Get-VMSnapshot -VMName * | Where-Object {$_.CreationTime -lt (Get-Date).AddDays(-30) } | Remove-VMSnapshot

Supprimer l’arborescence d’un snapshot:

Get-VMSnapshot -VMName <VMname> | Select-VMSnapshot <SnapshotName> | Remove-VMSnapshot -Tree

Déplacer une VM vers un hote du cluster

Move-VM <VMname> <HostDestination>

Déplacer le stockage d’une VM:

Move-VMStorage <VMname> -DestinationStoragePath <DestinationVMfolderpath>

Déplacer la VM et son stockage (ajouter -RetainVHDCopiesOnSource pour faire une copie plutot qu’un déplacer):

Move-VM <VMname> <HostDestination> -IncludeStorage -DestinationStoragePath <DestinationVMfolderpath>

Vérifier la compatibilité d’une VM avant de la déplacer (ou avant un import):

$Report = Compare-VM <VMname> -DestinationHost <HostDestination> -IncludeStorage -DestinationStoragePath <DestinationVMfolderpath>

Afficher le rapport de compatibilité résultant de la commande précédente:

$Report.Incompatibilities | FT -AutoSize

Vérifier l’intégrité des vDisques (VHD/VHDX) d’une VM:

Get-VMHardDiskDrive <VMname> | test-vhd

Définir une VM en démarrage automatique:

Get-VM -VMname <VMname> | Set-VM -AutomaticStartAction Start

Vérifier qu’une VM est opérationnelle (par la réponse des Integration Services), test toutes les 5 secondes jusqu’a la fin du time-out (en secondes):

Test-VMHeartBeat <VMname> -Timeout 60

Enregistrer dans SCVMM une VM déjà présente dans Hyper-V Manager:

$VMHost = Get-SCVMHost -ComputerName <HyperVname>

Register-SCVirtualMachine -VMHost $VMHost -Path<VMpath>

Et plus particulièrement sur le réseau

Vérifier le Jumbo Frame

get-NetAdapterAdvancedProperty -DisplayName “Jumbo Packet” | format-table Name, RegistryValue

Définir le Jumbo Frame

set-NetAdapterAdvancedProperty -Name “Ethernet X” -DisplayName “Jumbo Packet” -RegistryValue 9014

Créer un teaming avec les interface X et Y

new-NetLBFOTeam -Name NetAdapterTeam -TeamMembers @(“Ethernet X”, “Ethernet Y”)

Ajouter une NIC a un teaming:

remove-NetLbfoTeamMember -Name “Ethernet X” -Team “TeamName”

Retirer une NIC d’un teaming:

add-NetLbfoTeamMember -Name “Ethernet X” -Team “TeamName”

Connecter le teaming à l’ExternalSwitch

set-VMSwitch -SwitchName ExternalSwitch -NetAdapterName NetAdapterTeam

Voir la liste des VLAN sur les interfaces:

get-VMNetworkAdapterVlan

Définir le VLAN de la partie management de l’hôte Hyper-V:

set-VMNetworkAdapterVlan -Access -ManagementOS -VMNetworkAdapterName « ExternalSwitch » -VlanID <Id>

Définir le VLAN d’une VM:

set-VMNetworkAdapterVlan -Access -VMNetworkAdapterName « External » -VMName <VMname> -VlanID <Id>

Créer un nouveau switch virtuel externe:

new-vmswitch -Name ExternalSwitch -AllowManagementOS $true -NetAdapterName <NomInterface>

Connecter une VM au switch externe:

Connect-VMNetworkAdapter -VMName <nomVM> -SwitchName ExternalSwitch -Name External

Créer un nouveau switch virtuel interne:

new-vmswitch -Name InternalSwitch -AllowManagementOS $true -SwitchType Internal

Connecter une VM au switch externe:

Connect-VMNetworkAdapter -VMName <nomVM> -SwitchName InternalSwitch -Name Internal

Obtenir l’adresse IP d’une VM:

Get-VMNetworkAdapter -VMName<VMname>| Select -expand IPAddresses

Voir les ACLs appliquées à une VM:

Get-VMNetworkAdapterACL -VMName <VMname>

  1. 01/02/2016 à 11:17 | #1

    quelques commandes intéressantes ici: http://itblog.team-holm.net/index.php?scriptName=Hyper-V

  1. Pas encore de trackbacks