Dans ce blog, nous allons voir comment préparer un VHD étapes par étapes en appliquant notre image de référence Windows 8 pour un serveur sous Hyper-v.
Il est intéressant de connaitre les cmdlets sous Powershell étant donné que l’utilisation de Diskpart est maintenant dépréciée.
Notre serveur Hyper-v ne détient actuellement aucune machine.

Nous définissons dans une variable le nom qu’aura notre VM dans Hyper-v
$NameVm="Demo"
Nous définissons dans une variable l’emplacement et le nom qu’aura notre VHD créé
$PathVM="C:\VHD\$NameVM.vhdx"
Nous créons maintenant notre VHD à l’aide de la cmdlet " new-vm " qui créera directement la VM dans Hyper-v .
new-vm -Name $NameVm -MemoryStartupBytes 1024MB -NewVHDPath $PathVM -NewVHDSizeBytes 10000MB
Le résultat :



Il est maintenant nécessaire que nous montions notre VHD pour le préparer (partionnement, boot,..)
Mount-VHD $PathVM
En utilisant maintenant la cmdlet "Get-disk" nous pouvons vérifier que notre VHD à correctement été monté.

Notre VHD n’ayant pas encore été partitionné, il apparait sous le style de partition raw. Nous allons maintenant récupérer le numéro de partition de ce VHD grâce au « Friendly Name » et au « Partition Style »
$numero=(get-disk | Where-Object {$_.friendlyname -match "virtual" -and $_.partitionstyle -match "raw"}).number
Il faut maintenant initialisé le VHD afin de pouvoir formater celui-ci et y stocker des données.
Initialize-Disk $numero -PartitionStyle mbr
get-disk $numero

Le disque a bien été initialisé.
Nous allons maintenant partitionner ce VHD en NTFS
$Label="Demo"
New-Partition $numero -UseMaximumSize -AssignDriveLetter | Format-Volume -NewFileSystemLabel $label -FileSystem NTFS –asjob
Nous ne connaissons pas la lettre de volume qui lui a été alloué. Pour cela, on peut consulter tous les volumes à l’aide de la cmdlet :
Get-volume

Nous allons maintenant récupérer notre volume par l’identifiant de notre label précédemment définit.
$vol=(Get-Volume | Where-Object {$_.filesystemlabel -match $label}).driveletter
$vol1=$vol+":"
Et maintenant nous appliquons notre master de référence sous l’extension WIM avec DISM.
dism /apply-image /imagefile:C:\Users\administrateur\Desktop\Master_8.wim /index:1 /applydir:$vol1

On définit maintenant la partition comme étant active pour que celle-ci puisse booter depuis un OS.
Set-Partition -DriveLetter $vol -IsActive $true
Et maintenant nous allons configurer notre magasin BCD en lui ajoutant l’entrée de notre nouveau disque VHD.
$vol2=$vol1+"\Windows"
bcdboot $vol2 /s $vol1

Nous pouvons maintenant démonter notre VHD puis démarrer notre VM.
Dismount-VHD $PathVM
Start-VM $NameVm
Maintenant si nous revenons sur la console Hyper-v, nous pouvons constater que notre VM a bien démarrer et que notre master de référence Works !!

Il suffit maintenant d’imaginer un déploiement de master de référence à plus grande échelle pour une phase de recette par exemple.
Pour cela, il suffit d’effectuer une boucle dans un script avec toute les cmdlets et cela se déploiera au sein de Hyper-v de façon automatisé.