Steps to Create a Windows Template
Assuming that the Windows Template guest VM has already been spun up and configured, the next step would be to “SysPrep” it prior to converting the image into a template.
Run: sysprep.exe > select Out-of-Box Experience > Generalize > Shutdown
Alternative command line:
# CMD
%WINDIR%\system32\sysprep\sysprep.exe /generalize /shutdown /oobe
# PowerShell
& "$env:windir\system32\sysprep\sysprep.exe" /generalize /shutdown /oobe
After the template VM has been shutdown from the previous move, navigate to the named target machine > right-click it > click Export… > Specify the exporting storage location > click Export to initiate the task
Once this exporting process completes, the original machine could either be retained for future update and re-export or deleted as the golden image has already been generated. Common practice is to leave the original image as-is.
A Punch of Clicks to Import a Template
Note: Hyper-V will make an exact copy of the chosen image during the exporting steps. Hence, it will be necessary to manually change the server name label, rename the disk(s), change the settings of the new VM to point to this newly renamed disk file
To rename the VM disk, navigate to C:\MSClusterStorage\Volume1\VHD\SERVER007\Virtual Hard Disks > right-click a desired disk file > rename (e.g. SERVER007.vhdx) > input a new name > press Enter
To Import an Exported VM, navigate to Hyper-V Manager > select the host where a new VM is to be deployed > right-click it > Import Virtual Machine… > select the correct folder and image file that has been generated by the previous export > at the Choose Import Type option, select “Copy the virtual machine (create a new unique ID)” radio button > specify the destination storage location for the new VM similar to an example below:
Virtual Machine configuration folder: C:\MSClusterStorage\Volume1\VHD\SERVER007
Checkpoint store: C:\MSClusterStorage\Volume1\VHD\SERVER007\Snapshots
Smart Paging folder: C:\MSClusterStorage\Volume1\VHD\SERVER007
Specify Virtual hard disks to use: C:\MSClusterStorage\Volume1\VHD\SERVER007\Virtual Hard Disks\SERVER007.vhdx
Click Import when done > navigate to the newly imported VM (that may have the same label as the original template) > right-click it > Settings… > verify that the Hard Drive is set at the correct location to confirm that it is indeed a new machine > set CD Rom attached ISO to ‘none’ > OK > right-click the imported machine again > rename > input a desired name for the new machine > press Enter to make the renaming function effective > right-click the renamed VM > Start > right-click it once more > connect > Access the console of the running VM to proceed with OS reconfigurations
Note that the networking aspects are reset during sysprep, thus it would be necessary to run ncpa.cpl to reconfigure IPV4 properties of the newly created Windows VM.
Alternative, there is a PowerShell script to perform the steps above:
Me now considering a fork of that script and add some new features… Until then…
Chuck
Hello, is this script still available?
kimconnect
Hi Chuck, please clarify your question. What script are you looking for?
ryan
“Alternative, there is a PowerShell script to perform the steps above: …”
kimconnect
Sorry, I’ve been absent minded with old notes… It appears that Microsoft has reorganized their code repos and documentation sites. At this time, I do not know where the ‘alternative’ script has been moved to… I’m currently more into Linux and Kubernetes; thus, I wouldn’t have the motivation to translate the instructions above via PowerShell scripting until an opportunity arises.
Bob to the rescue
You can get it here:
https://www.altaro.com/hyper-v/create-virtual-machine-from-template-powershell//