@@ -424,7 +424,11 @@ If (-not $isAdmin) {
424424 WriteInfo " `t Creating OS VHD"
425425 New-VHD - ParentPath $serverparent.fullname - Path $vhdpath
426426
427- $VMTemp = New-VM - Path " $LabFolder \VMs" - Name $VMname - Generation 2 - MemoryStartupBytes $VMConfig.MemoryStartupBytes - SwitchName $SwitchName - VHDPath $vhdPath
427+ if ($VMConfig.VMVersion ){
428+ $VMTemp = New-VM - Path " $LabFolder \VMs" - Name $VMname - Generation 2 - MemoryStartupBytes $VMConfig.MemoryStartupBytes - SwitchName $SwitchName - VHDPath $vhdPath - Version $VMConfig.VMVersion
429+ }else {
430+ $VMTemp = New-VM - Path " $LabFolder \VMs" - Name $VMname - Generation 2 - MemoryStartupBytes $VMConfig.MemoryStartupBytes - SwitchName $SwitchName - VHDPath $vhdPath
431+ }
428432
429433 # Set dynamic memory
430434 if ($VMConfig.StaticMemory -eq $false ){
@@ -547,14 +551,22 @@ If (-not $isAdmin) {
547551 New-VHD - ParentPath $serverparent.fullname - Path $vhdpath
548552
549553 # Get VM Version
550- [System.Version ]$VMVersion = (Get-WindowsImage - ImagePath $VHDPath - Index 1 ).Version
551- WriteInfo " `t VM Version is $ ( $VMVersion .Build ) .$ ( $VMVersion .Revision ) "
554+ [System.Version ]$BuildVersion = (Get-WindowsImage - ImagePath $VHDPath - Index 1 ).Version
555+ WriteInfo " `t VM Version is $ ( $BuildVersion .Build ) .$ ( $BuildVersion .Revision ) "
552556
553557 WriteInfo " `t Creating VM"
554- if ($VMConfig.Generation -eq 1 ){
555- $VMTemp = New-VM - Name $VMname - VHDPath $vhdpath - MemoryStartupBytes $VMConfig.MemoryStartupBytes - path " $LabFolder \VMs" - SwitchName $SwitchName - Generation 1
558+ if ($VMConfig.VMVersion ){
559+ if ($VMConfig.Generation -eq 1 ){
560+ $VMTemp = New-VM - Name $VMname - VHDPath $vhdpath - MemoryStartupBytes $VMConfig.MemoryStartupBytes - path " $LabFolder \VMs" - SwitchName $SwitchName - Generation 1 - Version $VMConfig.VMVersion
561+ }else {
562+ $VMTemp = New-VM - Name $VMname - VHDPath $vhdpath - MemoryStartupBytes $VMConfig.MemoryStartupBytes - path " $LabFolder \VMs" - SwitchName $SwitchName - Generation 2 - Version $VMConfig.VMVersion
563+ }
556564 }else {
557- $VMTemp = New-VM - Name $VMname - VHDPath $vhdpath - MemoryStartupBytes $VMConfig.MemoryStartupBytes - path " $LabFolder \VMs" - SwitchName $SwitchName - Generation 2
565+ if ($VMConfig.Generation -eq 1 ){
566+ $VMTemp = New-VM - Name $VMname - VHDPath $vhdpath - MemoryStartupBytes $VMConfig.MemoryStartupBytes - path " $LabFolder \VMs" - SwitchName $SwitchName - Generation 1
567+ }else {
568+ $VMTemp = New-VM - Name $VMname - VHDPath $vhdpath - MemoryStartupBytes $VMConfig.MemoryStartupBytes - path " $LabFolder \VMs" - SwitchName $SwitchName - Generation 2
569+ }
558570 }
559571 $VMTemp | Set-VMMemory - DynamicMemoryEnabled $true
560572 $VMTemp | Get-VMNetworkAdapter | Rename-VMNetworkAdapter - NewName Management1
@@ -742,7 +754,7 @@ If (-not $isAdmin) {
742754 WriteInfo " `t`t No sync commands requested"
743755 }
744756
745- if ($VMVersion .Build -ge 17763 ){
757+ if ($BuildVersion .Build -ge 17763 ){
746758 $oeminformation = @"
747759 <OEMInformation>
748760 <SupportProvider>MSLab</SupportProvider>
@@ -1162,13 +1174,31 @@ If (-not $isAdmin) {
11621174
11631175 WriteInfo " `t Starting IP for AdditionalNetworks is $global :IP "
11641176
1165- # Create Mount nd VMs directories
1177+ # Create Mount and VMs directories
11661178 WriteInfoHighlighted " Creating Mountdir"
11671179 New-Item $mountdir - ItemType Directory - Force
11681180
11691181 WriteInfoHighlighted " Creating VMs dir"
11701182 New-Item " $PSScriptRoot \LAB\VMs" - ItemType Directory - Force
11711183
1184+ # unmount&cleanup mounted images
1185+ WriteInfoHighlighted " Unmounting images from previous run"
1186+ $MountedImages = Get-WindowsImage - Mounted | Where-Object MountStatus -ne " Invalid"
1187+ if ($MountedImages ){
1188+ WriteInfo " `t Mounted images found, Dismounting, discarting"
1189+ $MountedImages | Dismount-WindowsImage - Discard - ErrorAction Ignore
1190+ }else {
1191+ WriteInfo " `t No mounted images found"
1192+ }
1193+ # cleanup corrupted
1194+ $InvalidImages = Get-WindowsImage - Mounted | Where-Object MountStatus -eq " Invalid"
1195+ if ($InvalidImages ){
1196+ WriteInfo " `t Invalid mountpoints found, clearing"
1197+ Clear-WindowsCorruptMountPoint
1198+ }else {
1199+ WriteInfo " `t No invalid mountpoints found"
1200+ }
1201+
11721202 # get path for Tools disk
11731203 WriteInfoHighlighted " Looking for Tools Parent Disks"
11741204 $toolsparent = Get-ChildItem " $PSScriptRoot \ParentDisks" - Recurse | Where-Object name -eq tools.vhdx
@@ -1493,9 +1523,9 @@ If (-not $isAdmin) {
14931523 if (-not $VMConfig.configuration ) {
14941524 $VMConfig.configuration = " Simple"
14951525 }
1496- # Ensure that MemoryStartupBytes is set to use 512MB as default
1526+ # Ensure that MemoryStartupBytes is set to use 1GB as default
14971527 if (-not $VMConfig.MemoryStartupBytes ) {
1498- $VMConfig.MemoryStartupBytes = 512 MB
1528+ $VMConfig.MemoryStartupBytes = 1 GB
14991529 }
15001530
15011531 # create VM with Shared configuration
0 commit comments