PowerShell 实现虚拟机快速部署的核心是利用 Hyper-V 或 Azure PowerShell 模块配合参数化脚本批量执行创建、配置、启动等操作,无需手动界面操作,一条命令链即可完成从零到运行的全过程。PowerShell 实现虚拟机快速部署,核心在于利用 Windows 内置的 Hyper-V 模块(本地)或 Azure PowerShell 模块(云环境),配合参数化脚本批量执行创建、配置、启动等操作。不需要手动点选界面,一条命令链就能完成从零到运行的全过程。
确认前提条件:Hyper-V 或 Azure 环境就绪
本地部署需确保:
- Windows 10/11 Pro、Enterprise 或 Windows Server 2016+ 系统
- 以管理员身份运行 PowerShell
- 已启用 Hyper-V 功能:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All(执行后重启)
- 验证模块可用:Get-Module -ListAvailable -Name Hyper-V,若无输出,运行 Install-Module -Name Hyper-V -Force -SkipPublisherCheck
若面向 Azure,则需安装 Az 模块:Install-Module -Name Az -AllowClobber -Force,并用 Connect-AzAccount 登录订阅。
本地 Hyper-V:三步完成一台 VM 部署
以下脚本可直接复制运行(路径、名称、资源按需调整):
-
创建虚拟交换机(仅需一次):
New-VMSwitch -Name "ExternalSwitch" -NetAdapterName "Ethernet" -SwitchType External -
新建虚拟机并附带动态 VHDX 硬盘:
New-VM -Name "WebDev-01" -Path "C:\VMs" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "C:\VMs\WebDev-01.vhdx" -NewVHDSizeBytes 40GB -SwitchName "ExternalSwitch" -
挂载 ISO 并启动(如 Win10 安装镜像):
Add-VMDvdDrive -VMName "WebDev-01" -Path "D:\ISO\win10_22h2.iso"<br>Start-VM -Name "WebDev-01"
批量部署多台 VM:用哈希表 + 循环简化操作
例如一次性创建 3 台开发测试机:
- 定义配置列表:
$VMs = @(<br> @{Name="Dev-01"; RAM=2GB; VHDSize=30GB},<br> @{Name="Dev-02"; RAM=2GB; VHDSize=30GB},<br> @{Name="Dev-03"; RAM=2GB; VHDSize=30GB}<br>) - 循环创建:
foreach ($vm in $VMs) {<br> New-VM -Name $vm.Name -Path "C:\VMs" -MemoryStartupBytes $vm.RAM `<br> -Generation 2 -NewVHDPath "C:\VMs\$($vm.Name).vhdx" -NewVHDSizeBytes $vm.VHDSize `<br> -SwitchName "ExternalSwitch"<br>}
后续还可统一设置启动顺序、添加检查点、配置静态 IP(通过 Guest Service Interface 或 DHCP 预配),进一步减少人工干预。
云端部署(Azure):用 Az 模块一键拉起 Windows VM
典型流程包含资源组、网络、VM 三步,全部可脚本化:
- 创建资源组与网络基础:
$rg = "myRG"<br>New-AzResourceGroup -Name $rg -Location "East US"<br>$vnet = New-AzVirtualNetwork -ResourceGroupName $rg -Name "myVNet" -AddressPrefix "10.0.0.0/16" -Location "East US"
- 部署 VM(含凭据、OS 映像、公网 IP):
$cred = Get-Credential<br>New-AzVm -ResourceGroupName $rg -Name "az-win-01" -Location "East US" `<br> -VirtualNetworkName "myVNet" -SubnetName "default" `<br> -SecurityGroupName "myNSG" -PublicIpAddressName "myIP" `<br> -Credential $cred -Image "Win2022Datacenter"
如需 Spot 实例降本,只需在 New-AzVMConfig 中加入 -Priority Spot -MaxPrice -1 即可。
不复杂但容易忽略的是权限与路径权限——确保 PowerShell 以管理员运行,且目标文件夹(如 C:\VMs)对 Hyper-V 组有写入权限;Azure 场景下还需确认账户具备 Contributor 权限。











