步骤 1:启用 Hyper-V 功能
以管理员身份运行 PowerShell 执行以下命令:
# 安装 Hyper-V 角色并重启
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
步骤 2:生成 Windows 10 模板
2.1 创建模板虚拟机
手动操作:
- 1、使用 Hyper-V 管理器创建一台 Windows 10 虚拟机(内存 16GB,硬盘 1024GB)。
- 2、安装操作系统并完成初始化配置(激活、更新、安装工具等)。
- 3、通用化镜像(避免 SID 冲突):
- 在 Windows 10 虚拟机中运行:
C:WindowsSystem32Sysprepsysprep.exe /generalize /oobe /shutdown
- 在 Windows 10 虚拟机中运行:
C:HyperVTemplatesWin10_Base.vhdx
步骤 3:批量生成 500 台虚拟机的脚本
3.1 创建 PowerShell 脚本 Create-500VMs.ps1
# 定义全局参数
$vmPrefix = "Win10VM" # 虚拟机名前缀(如 Win10VM001)
$vmCount = 500 # 虚拟机数量
$baseVHDPath = "C:HyperVTemplatesWin10_Base.vhdx" # 模板路径
$vmParentPath = "C:HyperVVMs" # 虚拟机存储根目录
$vSwitchName = "ExternalSwitch" # 虚拟交换机名称(需提前创建)
$memoryPerVM = 16GB # 每台虚拟机内存(16GB)
$diskSize = 1024GB # 每台虚拟机硬盘大小(1024GB)
$cpuCoresPerVM = 4 # 每台虚拟机 CPU 核心数
# 检查 Hyper-V 模块是否加载
if (-not (Get-Module -ListAvailable -Name Hyper-V)) {
Write-Host "错误:Hyper-V 模块未安装!" -ForegroundColor Red
exit
}
# 创建存储目录
New-Item -Path $vmParentPath -ItemType Directory -Force -ErrorAction Stop
# 批量创建虚拟机(使用差异磁盘优化存储)
for ($i = 1; $i -le $vmCount; $i++) {
$vmName = "$vmPrefix$($i.ToString('000'))" # 名称格式:Win10VM001
$vmPath = "$vmParentPath$vmName"
$diffVHDPath = "$vmPath$vmName.vhdx"
try {
# 创建虚拟机目录
New-Item -Path $vmPath -ItemType Directory -Force
# 创建差异磁盘(基于模板)
New-VHD -ParentPath $baseVHDPath -Path $diffVHDPath -Differencing -SizeBytes $diskSize
# 创建虚拟机
New-VM -Name $vmName -MemoryStartupBytes $memoryPerVM -Path $vmPath -VHDPath $diffVHDPath -Generation 2 -SwitchName $vSwitchName
Set-VMProcessor -VMName $vmName -Count $cpuCoresPerVM
# 配置动态内存(可选)
Set-VMMemory -VMName $vmName -DynamicMemoryEnabled $true -MinimumBytes 8GB -MaximumBytes $memoryPerVM
Write-Host "[成功] 虚拟机 $vmName 已创建" -ForegroundColor Green
} catch {
Write-Host "[失败] 虚拟机 $vmName 创建失败:$_" -ForegroundColor Red
}
}
Write-Host "所有虚拟机已创建完成!" -ForegroundColor Cyan
3.2 脚本使用方法
- 1、将脚本保存为
Create-500VMs.ps1
。 - 2、以管理员身份运行 PowerShell,执行以下命令:
Set-ExecutionPolicy RemoteSigned -Force # 允许脚本运行
.Create-500VMs.ps1
步骤 4:虚拟交换机配置(如未提前创建)
运行以下命令创建外部虚拟交换机(需替换 Ethernet1 为实际网卡名称):
New-VMSwitch -Name "ExternalSwitch" -NetAdapterName "Ethernet1" -AllowManagementOS $true
步骤 5:资源优化与注意事项
- 1、存储优化:
- 使用 差异磁盘 后,所有虚拟机共享基础模板,实际占用空间为
基础模板大小 + 500台差异磁盘增量
。 - 若需独立磁盘,将
New-VHD
命令替换为Copy-Item
复制模板文件。
- 使用 差异磁盘 后,所有虚拟机共享基础模板,实际占用空间为
- 2、并行加速:
- 在
for
循环中使用Start-Job
或ForEach-Object -Parallel
(PowerShell 7+)实现并行创建。
- 在
- 3、资源监控:
- 监控磁盘 I/O 和内存使用,避免同时创建过多虚拟机导致系统崩溃。
- 4、分批次启动:
- 首次启动时建议分批次操作(如每次启动 50 台),避免资源争用。
最终文件结构
C:
├─ HyperV/
│ ├─ Templates/
│ │ └─ Win10_Base.vhdx # Windows 10 模板文件
│ └─ VMs/
│ ├─ Win10VM001/ # 虚拟机目录
│ │ ├─ Virtual Hard Disks/
│ │ │ └─ Win10VM001.vhdx # 差异磁盘
│ ├─ Win10VM002/
│ └─ ...
└─ Create-500VMs.ps1 # 自动化脚本
原文始发于微信公众号(灰帽安全):Windows Server 2022 批量创建 500 台 Hyper-V 虚拟机完整解决方案,批量部署脚本
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论