#Vos disques systèmes sysprépés prêt à l'emploi, chemin d'accès complet et noms des fichiers VHDX, chaque modèle affecté à une variable
#Modifiez ici les chemins d'accès, le nom des VHDX et éventuellement le nom des variables
$Srv2008R2ENT = "\\Couzonsan\Sources\Vhds\Srvr2008R2_Ent.vhdx"
$Srv2008R2STD = "\\Couzonsan\Sources\Vhds\Srvr2008R2_Std.vhdx"
$Srv2012STD = "\\Couzonsan\Sources\Vhds\Srvr2012_Std.vhdx"
$Srv2012R2STD = "\\Couzonsan\Sources\Vhds\Srvr2012R2_Std.vhdx"
$Station81ENTx86 = "\\Couzonsan\Sources\Vhds\Win81_Ent_x86.vhdx"
$Station81ENTx64 = "\\Couzonsan\Sources\Vhds\Win81_Ent_x64.vhdx"
$Station7ENTx86 = "\\Couzonsan\Sources\Vhds\Win7_Ent_x86.vhdx"
$Station7ENTx64 = "\\Couzonsan\Sources\Vhds\Win7_Ent_x64.vhdx"
$Station10ENTx86 = "\\Couzonsan\Sources\Vhds\Win10_Ent_x86.vhdx"
$Station10ENTx64 = "\\Couzonsan\Sources\Vhds\Win10_Ent_x64.vhdx"

#La VM à créer se base sur quel modèle de VHDX, information stockée dans une variable
#Modifiez ici le menu qui sera affiché par le script
Write-host "Choix du modèle de machine à déployer :"
Write-host "1 = Windows Server 2012 R2 Standard"
Write-host "2 = Windows Server 2012 Standard"
Write-host "3 = Windows Server 2008 R2 SP1 Standard"
Write-host "4 = Windows Server 2008 R2 SP1 Enterprise"
Write-host "5 = Station Windows 8.1 Entreprise x86"
Write-host "6 = Station Windows 8.1 Entreprise x64"
Write-host "7 = Station Windows 7 Sp1 Entreprise x86"
Write-host "8 = Station Windows 7 Sp1 Entreprise x64"
Write-host "9 = Station Windows 10 Entreprise x86"
Write-host "10 = Station Windows 10 Entreprise x64"
$modele = Read-host "Sélection du système d'exploitation / modèle de disque (chiffre de 1 à 10)"

#Nom de la VM à créer et affectation à une variable
$NomVM = Read-Host "Saisissez le nom de la VM à créer"

#Nombre de processeurs logiques à affecter à la VM avec un choix par défaut si appui sur la touche Entrée sans saisie
#Par défaut 1 processeur virtuel pour la VM, changez la valeur par défaut de la variable en fin de seconde ligne si besoin
$ProcVM = Read-Host "Nombre de processeurs logiques à affecter à la VM (Par défaut 1 si vous ne saisissez rien)"
if ($ProcVM -eq ""){$ProcVM=1} ; if ($ProcVM -eq $NULL){$ProcVM=1}

#Chemin de stockage de la VM avec un choix par défaut si appui sur la touche Entrée sans saisie
#Changez la valeur par défaut de la variable en fin de seconde ligne si besoin
$StockageVM = Read-Host "Saisissez le chemin d'accès de stockage de la VM (Par défaut, E:\LabMaSociete\ si vous ne saisissez rien)"
if ($StockageVM -eq ""){$StockageVM="E:\LabMaSociete\"} ; if ($StockageVM -eq $NULL){$StockageVM="E:\LabMaSociete\"}

#Commutateur virtuel a affecter à la premère carte réseau de la VM parmi la liste affichée en exécutant la commande Get-VMswitch
#Changez la valeur par défaut de la variable en fin de seconde ligne si besoin
Write-Host
Write-Host "Liste des commutateurs du serveur Hyper-V :"
Get-VMSwitch | select Name, SwitchType
$ReseauVM = Read-Host "Nom du commutateur virtuel a affecter à la carte réseau de la VM (Par défaut LAN si vous ne saisissez rien)"
if ($ReseauVM -eq ""){$ReseauVM="LAN"} ; if ($ReseauVM -eq $NULL){$ReseauVM="LAN"}

#Cette partie créée effectivement la machine virtuelle et réalise au passage la copie du disque dur sysprépé servant de modèle à la nouvelle VM
#Changez la valeur par défaut du commutateur MemoryStartupBytes si besoin qui créé par défaut la VM avec 4 Go de RAM
Write-Host
Write-Host "Création de la VM avec 4 Go de RAM..."
Write-Host
New-VM -Generation 1 -Name $NomVM -Path $StockageVM -SwitchName $ReseauVM -MemoryStartupBytes 4GB
#Copie du fichier de dique modèle
#Copie depuis le chemin d'accès partagé vers le chemin de stockage des disqies spécifié deux étapes plus haut
Switch ($modele)
{
1 {Copy-Item $Srv2012R2STD $StockageVM\$NomVM\$NomVM.vhdx ; Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$NomVM.vhdx}
2 {Copy-Item $Srv2012STD $StockageVM\$NomVM\$NomVM.vhdx ; Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$NomVM.vhdx}
3 {Copy-Item $Srv2008R2STD $StockageVM\$NomVM\$NomVM.vhdx ; Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$NomVM.vhdx}
4 {Copy-Item $Srv2008R2ENT $StockageVM\$NomVM\$NomVM.vhdx ; Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$NomVM.vhdx}
5 {Copy-Item $Station81ENTx86 $StockageVM\$NomVM\$NomVM.vhdx ; Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$NomVM.vhdx}
6 {Copy-Item $Station81ENTx64 $StockageVM\$NomVM\$NomVM.vhdx ; Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$NomVM.vhdx}
7 {Copy-Item $Station7ENTx86 $StockageVM\$NomVM\$NomVM.vhdx ; Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$NomVM.vhdx}
8 {Copy-Item $Station7ENTx64 $StockageVM\$NomVM\$NomVM.vhdx ; Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$NomVM.vhdx}
9 {Copy-Item $Station10ENTx86 $StockageVM\$NomVM\$NomVM.vhdx ; Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$NomVM.vhdx}
10 {Copy-Item $Station10ENTx64 $StockageVM\$NomVM\$NomVM.vhdx ; Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$NomVM.vhdx}
}
#Modification des caractéristiques de la nouvelle machine virtuelle
Set-VM -Name $NomVM -AutomaticStartAction Nothing -AutomaticStopAction ShutDown
Set-VMProcessor -VMName $NomVM -Count $ProcVM

#Ajout éventuel d'un second disque dur de données pour la VM, disque dynamic au format VHDX de 100 Go
Write-Host
$DataDisk = Read-Host "Voulez-vous ajouter un disque de données à cette VM ? (O/N)"
Write-Host
if ($DataDisk -eq "O"){
$DataDiskName = Read-Host "Nom du disque de données" ; 
New-VHD -Path $StockageVM\$NomVM\$DataDiskName.vhdx -Dynamic -SizeBytes 100GB ; 
Add-VMHardDiskDrive -VMname $NomVM -Path $StockageVM\$NomVM\$DataDiskName.vhdx
}

Write-Host "--------------------"
Write-Host "VM $NomVM déployée !"
Write-Host "--------------------"