In case you have Hyper-V in use, then you are in the right place. In this blog post I will show you how to create VMs in Hyper-V. I will also show how to create multiple Hyper-V VMs at the same time using PowerShell. It’s great to see PowerShell showing what it can do here as well: Automation. Let’s start.
Create a Hyper-V Guest with PowerShell
First of all we need the cmdlets for Hyper-V. These can be called quite easily. We retrieve all of them from the Hyper-V module.
Get-Command -Module Hyper-V
Fine, let’s move on. We need the New-VM Cmldet and a few parameters of it. Just modify the hashtable and enter parameter values of your choosing. It is assumed that you have already created a Hyper-V Switch and you have an installation medium.
$vms = @{
Name = 'Server001'
Generation = '2'
MemoryStartupBytes = 2GB
NewVHDPath = 'c:\temp\server001.vhdx'
NewVHDSizeBytes = 40GB
SwitchName = 'Default Switch'
}
New-VM @vms
Add-VMDvdDrive `
-VMName $vms.Name `
-Path C:\Software\de_windows_server_2019_updated_sep_2020_x64_dvd_da9064e2.iso
Set-VMFirmware -VMName $vms.Name `
-FirstBootDevice ((Get-VMFirmware -VMName $vms.Name).BootOrder |
Where-Object Device -like *DvD*).Device
How do you know this worked?
Get-VM

That’s it. Mission accomplished. We have successfully created a VM in Hyper-V with PowerShell that will boot with the given installation medium.
Create multiple Hyper-V Guests with PowerShell
PowerShell is a script language that focuses on automating tasks, In this example I show you how you can create Hyper-V guests at once originating from a simple array. The values, respectively computernames, are separated by comma. Give it a try, you can easily build on this example.
On your mark, get set, go 😉
'Server002','Server003' |
ForEach-Object {
New-VM `
-Name $_ `
-Generation '2' `
-MemoryStartupBytes 2GB `
-NewVHDPath "c:\temp\$_.vhdx" `
-NewVHDSizeBytes 40GB `
-SwitchName 'Default Switch'
}
As you can see we now have created multiple VMs.

You may ask now “Hey there is something missing”. You are right. Normally, we need to insert a DVD or ISO file which usually acts as the installation medium. Automating this is difficult because each VM needs a different medium. You can find the commands to add a DVD drive and set the Firmware in the first example of this blog post.
Hope you enjoyed it! See you!
Categories: PowerShell, Windows 10, Windows Server