前言
簡單來說,有個建立多個 VM 虛擬主機的大量部署需求,所以這篇筆記就誕生了。PowerShell 內容及概要說明:
- $VM_Path: 定義產生的 VM 所要存放的路徑。
- $HV_Host: 抓取目前執行此 PowerShell Script 的 Hyper-V 電腦名稱當成變數。
- Options1: 先建立個範本 VM(Bash_VM.vhdx),用它來部署大量的 VM 虛擬主機。
- Options2: 建立空的硬碟檔案,並建立 VM 虛擬主機。
- 設定最大 IOPS: 為避免迴圈建立 VM 虛擬主機造成大量的 IOPS,所以限制每台 VM 虛擬主機最多只能使用 50 IOPS。
- 指定 vCPU 數量: 指定 VM 虛擬主機的 vCPU 數量。
- 指定 vRAM 空間: 指定 VM 虛擬主機的 vRAM 空間。
- 啟動 VM 並加入 Cluster: 最後,啟動 VM 虛擬主機並加入指定的 Hyper-V Cluster。
PowerShell 指令碼內容
$VM_Path = "C:\ClusterStorage\Volume1"
$HV_Host = "$env:computername"
foreach ($i in 1..100)
{
#Create the necessary folders
if (!(Test-Path -Path "$VM_Path\$HV_Host\$HV_Host-VM$i")) {
New-Item -Path "$VM_Path\$HV_Host\$HV_Host-VM$i" -ItemType "Directory"
}
#Option1 - Copy Bash VHDX & Create template VM
Copy-Item "$VM_Path\Bash_VM.vhdx""$VM_Path\$HV_Host\$HV_Host-VM$i.vhdx"
New-VM -Name "$HV_Host-VM$i" -VHDPath "$VM_Path\$HV_Host\$HV_Host-VM$i.vhdx" -Generation 2 -SwitchName "S2S-vSwitch"
#Option2 - Create empty VM
#New-VM -Name "$HV_Host-VM$i" -NewVHDPath "$VM_Path\$HV_Host\$HV_Host-VM$i.vhdx" -NewVHDSizeBytes 50GB -Generation 2 -SwitchName "S2S-vSwitch"
#Configure Disk IOPS
Set-VMHardDiskDrive -VMName "$HV_Host-VM$i" -MaximumIOPS 50
#Configure CPU Count
Set-VMProcessor -VMName "$HV_Host-VM$i" -Count 2
#Configure Dynamic Memory
Set-VMMemory -VMName "$HV_Host-VM$i" -DynamicMemoryEnabled $True -MaximumBytes 4GB -MinimumBytes 512MB -StartupBytes 2GB
#Start the VM
Start-VM "$HV_Host-VM$i"
#Add the VM to the cluster
Add-ClusterVirtualMachineRole -Cluster "HV-WSFC" -VMName "$HV_Host-VM$i"
}