Back
Featured image of post Erstellen von Windows 10 Host auf Hyper-V

Erstellen von Windows 10 Host auf Hyper-V

Für gewisse Tests musste ich eine ganze Menge Hosts anlegen. Aber ich wollte keine Clones um bessere Tests machen zu können.

Also entschied ich mich dazu alles als einfache weg werfe  Systeme zu erstellen. Jedes davon habe ich dann manuell installiert. Da es um Tests mit Updates auf ein neues Windows 10 Build ging, habe auch jegliche automatisierte Installation verzichtet. Das aber nur um sicherzustellen, dass ich möglichst unterschiedliche Systeme bekomme.

Hier mein quick-hack mit dem ich die ganzen Gäste auf Hyper-V angelegt habe:

<#
       .SYNOPSIS
       Create a simple Windows 10 VM

       .DESCRIPTION
       Create a simple Windows 10 VM for my Test-LAB

       .PARAMETER Client
       Client Name

       .PARAMETER Path
       Wher to create the new Disk Image?
       Default is: D:\Hyper-V\Virtual Hard Disks\

       .PARAMETER DiskSize
       Size of the new Disk in GB?
       Default is 100

       .PARAMETER StartMem
       Memory Size in GB?
       Deafult is: 2

       .PARAMETER VSwitch
       Hyper-V Switch to use?
       Default is: EXT (my external LAB Switch)

       .PARAMETER Generation
       Hyper-V VM Generation?
       The default is: 2

       .PARAMETER MaxMem
       Max RAM Size in MegaByte?
       The default is: 3072

       .PARAMETER Enterprise
       Use Enterprise Edition?
       The default is: NO (Then the PRO Image is used)

       .EXAMPLE
       PS C:\> win10vm.ps1 -Client 'LABWIN10V01'

       Create the new VM LABWIN10V01 with the Default settings

       .NOTES
       TODO: Merge this with my existsing Clone Script.
       TODO: Add the other Switches from the LAB Server
#>
param
(
	[Parameter(Mandatory = $true,
				  Position = 1,
				  HelpMessage = 'Client Name')]
	[ValidateNotNullOrEmpty()]
	[string]
	$Client,
	[ValidateNotNullOrEmpty()]
	[string]
	$Path = 'D:\Hyper-V\Virtual Hard Disks\',
	[ValidateNotNullOrEmpty()]
	[int]
	$DiskSize = 100,
	[ValidateNotNullOrEmpty()]
	[int]
	$StartMem = 2,
	[ValidateNotNullOrEmpty()]
	[String]
	$VSwitch = 'EXT',
	[ValidateNotNullOrEmpty()]
	[int]
	$Generation = 2,
	[int]
	$MaxMem = 3072,
	[switch]
	$Enterprise
)

# Where to create the Disk
$Target = $Path + $Client + '.vhdx'

# Create the Disk
$DiskImageSize = ($DiskSize * 1GB)
$null = (New-VHD -Path $Target -Fixed -SizeBytes $DiskImageSize)

# Create the VM, without a Disk. We attach the new disk later
$VMStartupMemeory = ($StartMem * 1GB)
$null = (New-VM -Name $Client -MemoryStartupBytes $VMStartupMemeory -NoVHD -SwitchName $VSwitch -Generation $Generation)

# Set the Memory settings
$VMMaximumBytes = ($MaxMem * 1MB)
$null = (Set-VMMemory -VMName $Client -DynamicMemoryEnabled $true -MaximumBytes $VMMaximumBytes)

# Attach the new Disk
$null = (Add-VMHardDiskDrive -VMName $Client -Path $Target)

# What kind of Windows 10 do we deploy here?
if ($Enterprise)
{
	$null = (Add-VMDvdDrive -VMName $Client -Path 'C:\ISO\SW_DVD5_WIN_ENT_10_1511_64BIT_English_MLF_X20-82288.ISO')
}
else
{
	$null = (Add-VMDvdDrive -VMName $Client -Path 'C:\ISO\SW_DVD5_Win_Pro_10_1511_64BIT_English_MLF_X20-82416.ISO')
}

# Get the Adapter, Disk, DVD Settings
$network = (Get-VMNetworkAdapter -VMName $Client)
$vhd = (Get-VMHardDiskDrive -VMName $Client)
$dvd = (Get-VMDvdDrive -VMName $Client)

# Set the default Boot order
$null = (Set-VMFirmware -VMName $Client -BootOrder $vhd, $dvd, $network)

# Boot from the DVD on the 1st boot
$null = (Set-VMFirmware -VMName $Client -FirstBootDevice $dvd)

Feedback ist natürlich Willkommen! Hier oder auf GitHub!