Created
July 29, 2014 15:49
-
-
Save rshk/a1fcde3b5c77bff3756b to your computer and use it in GitHub Desktop.
PowerShell Create VM
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ------------------------------------------------------------ | |
# Create Hyper-V virtual machine via PowerShell | |
# ------------------------------------------------------------ | |
# Variables | |
$VM_NAME = "PS_TEST_VM" | |
$VM_MAC = "00:15:5d:11:22:01" | |
$VM_RAM = 256GB | |
$VM_CPUS = 16 | |
$VM_DEST_PATH = "C:\ClusterStorage\Volume1\tests" | |
$VM_VLAN = 82 | |
$VM_HOST = "HYPERV_NODE_25" | |
$NETWORK_SWITCH = "DefaultNetwork" | |
$ROOT_VHD_TPL = "C:\ClusterStorage\Volume1\tests\Template.vhdx" | |
$VM_ROOT_VHD = "${VM_DEST_PATH}/${VM_NAME}.vhdx" | |
$VM_DATA_VHD = "${VM_DEST_PATH}/${VM_NAME}-data.vhdx" | |
$VM_DATA_VHD_SIZE = 80GB | |
$VM_CLUSTER = "HV_CLUSTER_05" | |
# Create destination folder for VMs | |
MD $VM_DEST_PATH -ErrorAction SilentlyContinue | |
# Create Virtual Machine | |
# ------------------------------------------------------------ | |
echo "Creating VM: $VM_NAME on ${VM_HOST}" | |
$VM = New-VM -Name $VM_NAME -Path $VM_DEST_PATH -MemoryStartupBytes $VM_RAM -ComputerName $VM_HOST | |
#echo " VM Id: $( $VM.Id )" | |
#echo " VM Name: $( $VM.Name )" | |
#echo " Host: $( $VM.ComputerName )" | |
# Create & attach VHDs | |
# ------------------------------------------------------------ | |
# Note: it is impossible to boot from SCSI controllers | |
echo "Getting first SCSI controller" | |
echo "Copying Root VHD to $VM_ROOT_VHD" | |
Convert-VHD -Path $ROOT_VHD_TPL -DestinationPath $VM_ROOT_VHD | |
Add-VMHardDiskDrive -VM $VM -ControllerType IDE -ControllerNumber 0 -ControllerLocation 0 -Path $VM_ROOT_VHD | |
echo "Creating new Data disk $VM_DATA_VHD_SIZE in $VM_DATA_VHD" | |
New-VHD -Path $VM_DATA_VHD -SizeBytes $VM_DATA_VHD_SIZE -Dynamic | |
Add-VMHardDiskDrive -VM $VM -ControllerType IDE -ControllerNumber 0 -ControllerLocation 1 -Path $VM_DATA_VHD | |
# Set CPU / memory | |
# ------------------------------------------------------------ | |
echo "Setting CPU / Memory configuration" | |
Set-VMProcessor -VM $VM -Count $VM_CPUS | |
Set-VMMemory -VM $VM -DynamicMemoryEnabled $True -MaximumBytes 512GB -MinimumBytes 16GB -StartupBytes $VM_RAM | |
# Configure NIC | |
# ------------------------------------------------------------ | |
echo "Configuring NIC (mac address: ${VM_MAC}, switch: ${NETWORK_SWITCH})" | |
Remove-VMNetworkAdapter -VM $VM | |
Add-VMNetworkAdapter -VM $VM -Name PublicNIC -StaticMacAddress $VM_MAC -SwitchName $NETWORK_SWITCH | |
$ADAPTER = Get-VMNetworkAdapter -VM $VM | |
Set-VMNetworkAdapterVlan -VMNetworkAdapter $ADAPTER -Access -VlanId $VM_VLAN | |
# Connect-VMNetworkAdapter -VMNetworkAdapter $ADAPTER -SwitchName $NETWORK_SWITCH | |
# Add VM to cluster | |
# ------------------------------------------------------------ | |
echo "Adding VM to cluster" | |
Add-ClusterVirtualMachineRole -VMName $VM_NAME -Cluster $VM_CLUSTER | |
# Start VM | |
# ------------------------------------------------------------ | |
#Start-VM $VM_NAME |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment