2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 | #requires -Modules Hyper-V param [Parameter(Mandatory=$true,Position=1)][String]$VMName, [Parameter()][String]$VMStoragePath=', [Parameter()][String]$InstallISOPath=', [Parameter()][String]$VMSwitchName=', [Parameter()][Uint32]$MinimumMemory=256MB, [Parameter()][Uint64]$VHDXSizeBytes=40GB { } { } { } { Write-Error-Message('VM path {0} does not exist.'-f$VMStoragePath) } { } { Write-Error-Message('Storage path {0} does not exist.'-f$VHDStoragePath) } $VHDStoragePath=Join-Path-Path$VHDStoragePath-ChildPath$VHDXName if([String]::IsNullOrEmpty($InstallISOPath)-or-not(Test-Path-Path$InstallISOPath-PathTypeLeaf)) Write-Error-Message('ISO {0} does not exist'-f$InstallISOPath) } { $VMSwitchName=(Get-VMSwitch|?SwitchType-eq'External')[0].Name if([String]::IsNullOrEmpty($VMSwitchName)) Write-Error-Message('No virtual switch specified') } $VM=New-VM-Name$VMName-MemoryStartupBytes$StartupMemory-SwitchName$VMSwitchName-Path$VMStoragePath-Generation2-NoVHD Set-VMMemory-VM$VM-DynamicMemoryEnabled$true-MinimumBytes$MinimumMemory-MaximumBytes$MaximumMemory Start-VM-VM$VM New-VHD-Path$VHDStoragePath-SizeBytes$VHDXSizeBytes-Dynamic-BlockSizeBytes1MB $VMVHD=Add-VMHardDiskDrive-VM$VM-ControllerTypeSCSI-ControllerNumber0-ControllerLocation0-Path$VHDStoragePath-Passthru $VMDVDDrive=Add-VMDvdDrive-VM$VM-ControllerNumber0-ControllerLocation1-Passthru Set-VMNetworkAdapter-VMNetworkAdapter$VMNetAdapter-StaticMacAddress($VMNetAdapter.MacAddress) Set-VMFirmware-VM$VM-BootOrder$VMDVDDrive,$VMVHD,$VMNetAdapter-EnableSecureBootOn-SecureBootTemplate'MicrosoftUEFICertificateAuthority' Set-VMDvdDrive-VMDvdDrive$VMDVDDrive-Path$InstallISOPath { } |
SUBSYSTEM'memory',ACTION'add',ATTR{state}='online' |
2 | exit |