HomeHyper-V[Part II] Deploy “template” VM with powershell

[Part II] Deploy “template” VM with powershell

Als je veel virtuele machines aanmaakt en regelmatig overnieuw begint in je test lab dan is het wel zo makkelijk als je er niet te veel werk van hebt. Ik heb een template VM gemaakt welke dit door middel van een powershell script easy en snel kan doen.

Template VM

Je maakt eerste een virtuele machine aan in hyper-v en installeert daar het OS op. In mijn geval is dit een kale Windows server 2016 machine. Mijn virtuele machine heeft als standaard configuratie 4GB geheugen, 1vCPU, en een 50GB Harddisk.

Als Windows is geïnstalleerd geven we de machine een sysprep ( %SystemRoot%\System32 )

Admin CMD: sysprep /generalize /oobe /shutdown

Vervolgens kopiëren we de vhdx naar een locatie waar deze kan blijven staan. Het script zal deze vhdx straks gaan kopiëren voor nieuwe virtuele machines.

Powershell script

#GEEF DE NAAM VAN DE VM OP
$VMNAME = Read-host "Geef hier de naam van de VM op"
#MAAK EEN FOLDER AAN OP DE VM LOCATIE
New-Item -Path "U:\VM" -Name "$VMNAME" -ItemType "directory"
#COPY DE TEMPLATE VHDX NAAR DE NIEUWE LOCATIE
Import-Module BitsTransfer
$Source = "U:\Template\Template\Virtual Hard Disks\Template.vhdx"
$Destination = "U:\VM\$VMNAME"
Start-BitsTransfer -Source $Source -Destination $Destination -DisplayName "COPY TEMPLATE VHDX TO NEW LOCATION"
#RENEME FILE"
Rename-Item -Path "U:\VM\$VMNAME\Template.vhdx" -NewName "$VMNAME.vhdx"
#MAAK EEN NIEUWE VM 
$Memory = 4096MB
$Cpu = 1
$Gen = 1
$VHD = "U:\VM\$VMNAME\$VMNAME.vhdx"

new-vm -Name $VMNAME -Path U:\VM\$VMNAME -MemoryStartupBytes $Memory -Generation $Gen -Switch External_Network -VHDPath $VHD
Set-VMMemory $VMNAME -DynamicMemoryEnabled $False
Set-VMProcessor –VMName $VMName –count $Cpu
Set-VM -Name $VMNAME -AutomaticCheckpointsEnabled $false
Start-VM -Name $VMNAME

Leave a Reply

Your email address will not be published. Required fields are marked *