Accueil > Hyper-V > Hyper-V – Comment automatiser la création de plusieurs machines virtuelles ?

Hyper-V – Comment automatiser la création de plusieurs machines virtuelles ?

Bonjour à tous,

Voici un post rapide sur comment automatiser par script la création de plusieurs machines virtuelles en 2 minutes… L’idée m’est venue suite à la réinstallation de mon environnement Hyper-V et du temps qu’on passe souvent à créer et à configurer nos machines…

image

Prérequis

image

Il vous faut télécharger et installer le module Hyper-V à cette adresse :
http://pshyperv.codeplex.com/ 

Script Powershell

Lancer ensuite une console Hyper-V et utilser le script suivant :

#————————————————————————-
# AUTEUR : MICHEL PICOLLET | EXAKIS Paris
# Version : 3.0
#————————————————————————-

#    Usage du script :
#    .\Hyper-V-Create-Virtual-Environment-v3.ps1 -NBVM [X] -Eth [X]
#    -NBVM [X]    : Création de X Machines Virtuelles
#    -Eth  [X]    : Création de X VLAN (Internes) Virtuels
#    MAC Prefix   : 00155D00000[X]
#
#    Exemple d’utilisation :   
#    .\Hyper-V-Create-Virtual-Environment-v3.ps1 -NBVM 8 -Eth 1
#    (Pour la création de 8 Machines virtuelles et 1 VLAN)
#————————————————————————-

Param ([String]$NBVM, [String]$Eth)

if (!(Get-Module | where {$_.Name -eq "HyperV" })) 
{
 
if (Test-Path ‘C:\Program Files\modules\HyperV\HyperV.psd1’)
{
  Import-Module ‘C:\Program Files\modules\HyperV\HyperV.psd1’
  Write-Host " Importation OK" -fore green
}
else
    {
     write-host " Le module Hyper-V n’est pas disponible…" -fore red
     write-host " Veuillez installer le module, veuillez télécharger”
     write-host " le module ici :
http://pshyperv.codeplex.com/"
     break
    }
}
else
   {
     Write-Host "Le module est déjà importé…" -fore yellow
   }

$PathVMS = "D:\Virtualization\"
$PathISO = "D:\Sources\ISO\Windows 2008 Server Full x64 R2 en-us.iso"

#Clear
if ($Eth -eq "") {$Eth=1}
foreach ($e in (0..$Eth))
{
   $Result = Get-VMSwitch
   if ($result.ElementName -eq "Virtual Ethernet $e")
   {
     write-host "Virtual Ethernet $e existe déjà !"
   }
   else
       {
        write-host "Création du VLAN : Virtual Ethernet $e …"
        New-VMInternalSwitch "Virtual Ethernet $e"
       }
}

#Clear
if ($NBVM -eq "") {$NBVM=1}

Foreach ($i in (1..$NBVM))
{
$VM = "Machine $i"
$MAC = "00155D00000" + $i
$Fullpath = $PathVMS + $VM

write-host "1 – Création de la machine:"$VM -fore cyan
New-VM -Name $VM -Path $Fullpath
Set-VMMemory -VM $VM 1024MB

write-host "2 – Création du Vdisk 1…" -fore cyan
New-VHD -Size 300GB -Path "$Fullpath\HDD\Hard_disk1.vhd"
write-host "3 – Ajout du premier Disk 1 sur IDE 0" -fore cyan
Add-VMDisk -VM $VM -ControllerID 0 -LUN 0 -Path "$Fullpath\HDD\Hard_disk1.vhd"

write-host "4 – Ajout du contrôler SCSI" -fore cyan
Add-VMSCSIController $VM

write-host "5 – Ajout du premier Disk SCSI" -fore cyan
New-VHD -Size 300GB -Path "$Fullpath\HDD\Hard_disk2.vhd"
Add-VMDisk -VM $VM -SCSI 0 -LUN 0 -Path "$Fullpath\HDD\Hard_disk2.vhd"

write-host "6 – Ajout du second disk SCSI" -fore cyan
New-VHD -Size 300GB -Path "$Fullpath\HDD\Hard_disk3.vhd"
Add-VMDisk -VM $VM -SCSI 0 -LUN 1 -Path "$Fullpath\HDD\Hard_disk3.vhd"

write-host "7 – Montage de l’ISO" -fore cyan
Add-VMDisk -VM $VM -ControllerID 1 -LUN 0 -Path "$PathISO" –DVD

write-host "8 – Ajout de la Carte réseau" -fore cyan
Add-VMNic -VM $VM -Virtualswitch "Virtual Ethernet $e" -MAC $MAC
#Read-host
}

Note : Attention au Copier/Coller🙂

Démonstration du script

Lancement de la console Powershell :
powershell.exe -NoExit -ImportSystemModules

image

Exécution de la commande :
.\Hyper-V-Create-Virtual-Environment-v3.ps1 -NBVM 8 -Eth 1

image

Résultats

Après l’exécution du script le VLAN a été créé :

image

Les 8 machines virtuelles ont été créées :

image

La configuration de chaque machine a été faite selon mes souhaits :

image

Bien sûr, ce script peut largement être optimisé… Ceci n’est qu’un premier jet…

Enjoy !

Michel PICOLLET | EXAKIS Paris
Consultant Senior Microsoft [System Center]
mpicollet@event-horizon.fr

Catégories :Hyper-V Étiquettes : , , , ,
  1. décembre 20, 2011 à 1:11

    I am not sure where you are getting your information, but good topic.
    I needs to spend some time learning much more or understanding more.
    Thanks for fantastic info I was looking for this information for my mission.

  2. décembre 27, 2011 à 7:40

    Thank you for your comment !!
    However, I did not find, but I wrote this script …
    For once I script …🙂 And it’s not every day !

  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :