Create Hyper-V VM with powershell

Create Hyper-V VM with powershell

Gisteravond was ik voor de zoveelste keer een VM aan het aanmaken in mijn lab dat ik dacht hé dat kan ook anders. Onderstaand script heeft de mogelijkheid om drie verschillende virtuele machines aan te maken.

  • Create a Standard VM with 2GB Memory and 50GB Harddisk
  • Create a Standard VM with 4GB Memory and 100GB Harddisk
  • Create a Standard VM with 6GB Memory and 120GB Harddisk

De vm’s hebben bij mij de -BootDevice NetworkAdapter zodat de VM als deze is gestart direct naar de WDS server gaat voor een unattended installatie (in de volgende blog meer daarover)

De standaard locatie voor de VM’s is C:\HyperV

  • C:\HyperV\$VMNAME.vhdx
  • -Path C:\HyperV

Pas dit even aan naar de locatie die je zelf wilt voor de opslag van je vm’s

Powershell

function Show-Menu

{
param (
[string]$Title = ‘Create Hyper-v Machine’
)
cls
Write-Host “================ $Title ================”-ForegroundColor Cyan

Write-Host “1: Create a Standard VM with 2GB Memory and 50GB Harddisk”
Write-Host “2: Create a Standard VM with 4GB Memory and 100GB Harddisk”
Write-Host “3: Create a Standard VM with 6GB Memory and 120GB Harddisk”

Write-Host “Q: Press ‘Q’ to quit.”
}

do

{
Show-Menu
$input = Read-Host “Please make a selection”

switch ($input)
{ ‘1’ {
CLS
# Variables
$VMNAME = Read-Host -Prompt “Vul hier de naam van de VM in”
$Memory = 2GB
$Disk = 50GB

# Create Virtual Machines
New-VM -Name $VMNAME -MemoryStartupBytes $Memory -BootDevice NetworkAdapter -NewVHDPath C:\HyperV\$VMNAME.vhdx -Path C:\HyperV -NewVHDSizeBytes $Disk -Generation 2 -Switch ZZM_PXE
Start-VM -Name $VMNAME
} ‘2’ {
CLS
# Variables
$VMNAME = Read-Host -Prompt “Vul hier de naam van de VM in”
$Memory = 4GB
$Disk = 80GB

# Create Virtual Machines
New-VM -Name $VMNAME -MemoryStartupBytes $Memory -BootDevice NetworkAdapter -NewVHDPath C:\HyperV\$VMNAME.vhdx -Path C:\HyperV -NewVHDSizeBytes $Disk -Generation 2 -Switch ZZM_PXE
Start-VM -Name $VMNAME
} ‘3’ {
CLS
# Variables
$VMNAME = Read-Host -Prompt “Vul hier de naam van de VM in”
$Memory = 6GB
$Disk = 120GB

# Create Virtual Machines
New-VM -Name $VMNAME -MemoryStartupBytes $Memory -BootDevice NetworkAdapter -NewVHDPath C:\HyperV\$VMNAME.vhdx -Path C:\HyperV -NewVHDSizeBytes $Disk -Generation 2 -Switch ZZM_PXE
Start-VM -Name $VMNAME

} ‘q’ {
return
}
}
pause
}
until ($input -eq ‘q’)