On a vu la création d'une collection pool automatique ainsi que l'utilisation des disques de profil utilisateur lorsque que l'on fait du Virtual Desktop Infrastructure en Pool. La création de d'un Pool manuel consiste a intégrer manuellement les machines virtuelles dans le pool et faire en sorte qu'elles soient dans le domaine.

Nous ne pouvons pas faire :

  • Réinitialisation des machines virtuelles une fois la session fermé
  • Récréer les machines virtuelles
  • Integration automatique dans le domaine ou la possibilité d'indiquer un fichier de réponse
  • La création de nouvelle VM en quelques clique.

Bref, pas beaucoup d'interré à utiliser le pool manuel. Pour profitier des fonctionnalités que l'on a pas avec le Pool manuel, j'ai créé un script en powershell qui consite à :

  • Créer le nombre de machine virtelle que l'on désire
  • Il utilise les disques différentielles
  • Il vérifie le nom d'une machine virtuelle disponible en se basant sur le controleur de domaine ainsi que le serveur de virtualisation Hyper-V
  • Integre la VM à la collection

Mais attention, au préalable vous aurez besoin :

  • D'une image de base sysrepé avec un fichier de réponse qui integre automatiquement la VM dans le domaine
  • Avoir les modules RemoteDesktop et ActiveDirectory sur l'ordinateur executant le script

Voici le script :

$MemoryMin = 512MB
$MemeoryBuffer = "5"
$NBProcessor = "2"
function QueryVM
{
$Qnumvm = Read-Host 'Combien de Machine virtuelle désirez-vous (defaut = 1) ?'
$Qmemmax = Read-Host 'Veuillez indiquer le nombre de mémoire maximum en MB (defaut = 1024MB)(MAX = 4096MB) ?'
if ($Qmemmax -eq "")
{
$Qmemmax = "1024"
}
if ($Qnumvm -eq "")
{
$Qnumvm = 1
}
if ((&{trap {$false;continue} [boolean][int]$Qmemmax} -ieq "True") -and (&{trap {$false;continue} [boolean][int]$Qnumvm} -ieq "True") -and ($Qmemmax -ige 512) -and ($Qmemmax -ile 4096) )
{
Write-Host "Une erreur a été détécté durant la saisi. Assurez-vous :
- Qu'il ne s'agit uniquement de caractère alphanumérique.
- Que la mémoire minimum soit suppérieur ou égal à 512.
- Que la mémoire maximum soit inférieur ou égal à 4096.
- Que le nombre de machine virtuelle a créer soit supérieur ou égal à 1."  -BackgroundColor yellow -ForegroundColor Black
QueryVM
}
CreateVM
}
function CreateVM
{
for ($inc=1; $inc -le $Qnumvm; $inc++)
{
Write-Host "-------------------------------------
Création de la VM n°$inc" -BackgroundColor Green -ForegroundColor black
for ($i=1; ;$i++)
{
Import-Module RemoteDesktop
$NameVM = "BVMan-"
$StockageVM = "D:\Hyper-V\DEMO\VDI\Collection_BV_Manuel"
$NewNameVM = "$NameVM$i"
$NameDiskNewVM = "OS.vhdx"
$Hyperv = "TIEHPV1"
$SwitchEthernet = "Interne01"
$PathDiskBase = "D:\Hyper-V\DEMO\TIEBASE\Virtual Hard Disks\TIEBASE.vhdx"
$CollectionName = "Collection Pool Manuel"
$Broker = "tierdb1.tiennot.lan"
$QueryHyperV = Get-VM -name $NewNameVM -ComputerName $Hyperv  -ErrorAction ignore
$QueryAD = Get-ADComputer -Filter "Name -like '$NewNameVM'"
if (!$QueryHyperV -and !$QueryAD)
{
Write-Host "La VM n°$inc se nommera $NewNameVM" -BackgroundColor Green -ForegroundColor black
Write-Host "Début de la création de la VM n°$inc nommé $NewNameVM" -BackgroundColor Green -ForegroundColor black
New-VM -ComputerName $Hyperv -MemoryStartupBytes $MemoryMin -Name $NewNameVM -Path $StockageVM -SwitchName $SwitchEthernet -Confirm:$false >> null
Set-VMProcessor -VMName $NewNameVM -ComputerName $Hyperv -Confirm:$false -Count $NBProcessor
Set-VMMemory -VMName $NewNameVM -Buffer $MemeoryBuffer -ComputerName $Hyperv -DynamicMemoryEnabled $True -MaximumAmountPerNumaNodeBytes $MemoryMin -MaximumBytes 1024MB -MinimumBytes $MemoryMin
New-VHD –ParentPath $PathDiskBase –Path "$StockageVM\$NewNameVM\$NameDiskNewVM" -Differencing -Confirm:$false >> null
Add-VMHardDiskDrive $NewNameVM -Path "$StockageVM\$NewNameVM\$NameDiskNewVM"
Add-RDVirtualDesktopToCollection -CollectionName $CollectionName -VirtualDesktopName $NewNameVM -ConnectionBroker $Broker >> null
Start-VM $NewNameVM
Write-Host "Création de la VM n°$inc est terminé
-------------------------------------" -BackgroundColor Green -ForegroundColor black
sleep 15
break
}
}
}
}
QueryVM

Vous pouvez trouver ma vidéo expliquant la création et une démonstration de mon script :

A bientôt, Romain