在 PowerShell 中安装和部署 Hyper-V 相关组件时,可以使用 Install-WindowsFeature 或 Enable-WindowsOptionalFeature 命令来安装所需的功能。在 PowerShell 中操作 Hyper-V 可以通过一组命令来管理虚拟机、虚拟交换机、存储以及其他 Hyper-V 组件。
使用 Hyper-V 和 Windows PowerShell 进行操作 | Microsoft Learn
Hyper-V Module | Microsoft Learn
Disable-WindowsOptionalFeature (Dism) | Microsoft Learn
Hyper-V PowerShell 模块 Cmdlet 完整参考
适用于 Windows Server Hyper-V 及 Windows 10/11 客户端 Hyper-V。按动词分组排列,便于按操作意图查找。
Add — 添加资源
| Cmdlet | 描述 |
|---|---|
Add-VMAssignableDevice |
将可分配设备(如 GPU/DDA)添加到虚拟机 |
Add-VMDvdDrive |
添加 DVD 驱动器到虚拟机 |
Add-VMFibreChannelHba |
添加虚拟光纤通道 HBA 到虚拟机 |
Add-VMGpuPartitionAdapter |
添加 GPU 分区适配器到虚拟机 |
Add-VMGroupMember |
将成员添加到虚拟机组 |
Add-VMHardDiskDrive |
添加虚拟硬盘到虚拟机 |
Add-VMHostAssignableDevice |
向宿主机添加可分配设备(DDA 预留) |
Add-VMMigrationNetwork |
添加用于实时迁移的网络 |
Add-VMNetworkAdapter |
添加虚拟网络适配器到虚拟机 |
Add-VMNetworkAdapterACL |
为虚拟网络适配器创建并应用 ACL |
Add-VMNetworkAdapterExtendedACL |
为虚拟网络适配器创建扩展 ACL |
Add-VMNetworkAdapterRoutingDomainMapping |
向虚拟网络适配器添加路由域与虚拟子网映射 |
Add-VMRemoteFx3dVideoAdapter |
添加 RemoteFX 3D 视频适配器(已弃用) |
Add-VMScsiController |
添加 SCSI 控制器到虚拟机 |
Add-VMStoragePath |
向存储资源池添加存储路径 |
Add-VMSwitch |
向以太网资源池添加虚拟交换机 |
Add-VMSwitchExtensionPortFeature |
为虚拟网络适配器端口添加扩展功能 |
Add-VMSwitchExtensionSwitchFeature |
为虚拟交换机添加扩展功能 |
Add-VMSwitchTeamMember |
添加成员到虚拟交换机组 |
Checkpoint / Compare / Complete / Connect
| Cmdlet | 描述 |
|---|---|
Checkpoint-VM |
创建虚拟机检查点 |
Compare-VM |
比较虚拟机与目标宿主机的兼容性,输出报告 |
Complete-VMFailover |
完成副本服务器上的故障切换,清除所有恢复点 |
Connect-VMNetworkAdapter |
将虚拟网络适配器连接到虚拟交换机 |
Connect-VMSan |
将 HBA 与虚拟 SAN 关联 |
Convert / Copy / Debug
| Cmdlet | 描述 |
|---|---|
Convert-VHD |
转换 VHD 格式(VHD↔VHDX)、版本类型和块大小 |
Copy-VMFile |
从宿主机复制文件到虚拟机内部 |
Debug-VM |
对虚拟机进行内核调试附加 |
Disable — 禁用功能
| Cmdlet | 描述 |
|---|---|
Disable-VMConsoleSupport |
禁用第二代虚拟机的键盘、视频和鼠标控制台 |
Disable-VMEventing |
禁用虚拟机事件日志 |
Disable-VMIntegrationService |
禁用虚拟机上的指定集成服务 |
Disable-VMMigration |
禁用一个或多个宿主机的实时迁移 |
Disable-VMRemoteFXPhysicalVideoAdapter |
禁用 RemoteFX 物理显卡适配器(已弃用) |
Disable-VMResourceMetering |
停止收集虚拟机或资源池的资源计量数据 |
Disable-VMSwitchExtension |
禁用虚拟交换机上的扩展 |
Disable-VMTPM |
禁用虚拟机的 TPM 功能 |
Disconnect / Dismount
| Cmdlet | 描述 |
|---|---|
Disconnect-VMNetworkAdapter |
将虚拟网络适配器从虚拟交换机断开 |
Disconnect-VMSan |
移除虚拟 SAN 中的 HBA 关联 |
Dismount-VHD |
卸载已挂载的虚拟硬盘 |
Dismount-VMHostAssignableDevice |
从宿主机卸载可分配设备 |
Enable — 启用功能
| Cmdlet | 描述 |
|---|---|
Enable-VMConsoleSupport |
启用第二代虚拟机的键盘、视频和鼠标控制台 |
Enable-VMEventing |
启用虚拟机事件日志 |
Enable-VMIntegrationService |
启用虚拟机上的指定集成服务 |
Enable-VMMigration |
启用一个或多个宿主机的实时迁移 |
Enable-VMRemoteFXPhysicalVideoAdapter |
启用 RemoteFX 物理显卡适配器(已弃用) |
Enable-VMReplication |
启用虚拟机复制 |
Enable-VMResourceMetering |
开始收集虚拟机或资源池的资源计量数据 |
Enable-VMSwitchExtension |
启用虚拟交换机上的扩展 |
Enable-VMTPM |
启用虚拟机的 TPM 功能 |
Export
| Cmdlet | 描述 |
|---|---|
Export-VM |
将虚拟机导出到指定路径 |
Export-VMSnapshot |
将虚拟机检查点导出到磁盘 |
Get — 查询信息(最大分组)
虚拟机与宿主机
| Cmdlet | 描述 |
|---|---|
Get-VM |
获取一个或多个虚拟机对象 |
Get-VMHost |
获取 Hyper-V 宿主机配置 |
Get-VMHostCluster |
获取虚拟机所属的故障转移集群 |
Get-VMHostNumaNode |
获取宿主机的 NUMA 拓扑 |
Get-VMHostNumaNodeStatus |
获取 NUMA 节点上虚拟机的运行状态 |
Get-VMHostPartitionableGPU |
获取宿主机上可分区的 GPU 列表 |
Get-VMHostSupportedVersion |
获取宿主机支持的虚拟机配置版本列表 |
虚拟机内部组件
| Cmdlet | 描述 |
|---|---|
Get-VMBios |
获取第一代虚拟机的 BIOS 设置 |
Get-VMComPort |
获取虚拟机 COM 端口配置 |
Get-VMDvdDrive |
获取虚拟机 DVD 驱动器 |
Get-VMFirmware |
获取第二代虚拟机的 UEFI 固件配置 |
Get-VMFloppyDiskDrive |
获取虚拟机软盘驱动器(第一代) |
Get-VMHardDiskDrive |
获取虚拟机硬盘驱动器 |
Get-VMIdeController |
获取虚拟机 IDE 控制器 |
Get-VMMemory |
获取虚拟机内存配置 |
Get-VMProcessor |
获取虚拟机处理器配置 |
Get-VMVideo |
获取虚拟机视频显示设置 |
Get-VMScsiController |
获取虚拟机 SCSI 控制器 |
Get-VMSecurity |
获取虚拟机安全设置 |
Get-VMSnapshot |
获取虚拟机检查点列表 |
Get-VMIntegrationService |
获取虚拟机集成服务状态 |
网络
| Cmdlet | 描述 |
|---|---|
Get-VMNetworkAdapter |
获取虚拟网络适配器 |
Get-VMNetworkAdapterACL |
获取网络适配器上的 ACL 规则 |
Get-VMNetworkAdapterExtendedACL |
获取网络适配器上的扩展 ACL |
Get-VMNetworkAdapterFailoverConfiguration |
获取故障切换时使用的 IP 配置 |
Get-VMNetworkAdapterIsolation |
获取网络适配器的隔离设置 |
Get-VMNetworkAdapterRoutingDomainMapping |
获取路由域映射 |
Get-VMNetworkAdapterTeamMapping |
获取网络适配器与底层物理网卡的绑定关系 |
Get-VMNetworkAdapterVlan |
获取网络适配器的 VLAN 配置 |
Get-VMSwitch |
获取虚拟交换机 |
Get-VMSwitchExtension |
获取虚拟交换机扩展 |
Get-VMSwitchExtensionPortData |
获取端口级扩展功能的运行时状态 |
Get-VMSwitchExtensionPortFeature |
获取端口级可配置功能定义 |
Get-VMSwitchExtensionSwitchData |
获取交换机级扩展功能的运行时状态 |
Get-VMSwitchExtensionSwitchFeature |
获取交换机级可配置功能定义 |
Get-VMSwitchTeam |
获取虚拟交换机组 |
Get-VMSystemSwitchExtension |
获取宿主机上已安装的交换机扩展 |
Get-VMSystemSwitchExtensionPortFeature |
获取宿主机支持的端口级功能定义 |
Get-VMSystemSwitchExtensionSwitchFeature |
获取宿主机支持的交换机级功能定义 |
存储
| Cmdlet | 描述 |
|---|---|
Get-VHD |
获取虚拟硬盘对象信息 |
Get-VHDSet |
获取 VHD Set 文件信息 |
Get-VHDSnapshot |
获取 VHD Set 中的检查点信息 |
Get-VMStoragePath |
获取存储资源池中的路径 |
Get-VMSan |
获取虚拟 SAN 配置 |
复制与安全
| Cmdlet | 描述 |
|---|---|
Get-VMReplication |
获取虚拟机复制配置与状态 |
Get-VMReplicationAuthorizationEntry |
获取副本服务器的授权条目 |
Get-VMReplicationServer |
获取副本服务器的复制与认证设置 |
Get-VMKeyProtector |
获取虚拟机的 TPM 密钥保护器 |
Get-VMAssignableDevice |
获取虚拟机上已分配的设备 |
Get-VMHostAssignableDevice |
获取宿主机上预留给 DDA 的设备 |
Get-VMRemoteFx3dVideoAdapter |
获取虚拟机 RemoteFX 适配器(已弃用) |
Get-VMRemoteFXPhysicalVideoAdapter |
获取宿主机 RemoteFX 物理显卡(已弃用) |
Get-VMFibreChannelHba |
获取虚拟机光纤通道 HBA |
Get-VMGpuPartitionAdapter |
获取虚拟机 GPU 分区适配器 |
其他
| Cmdlet | 描述 |
|---|---|
Get-VMConnectAccess |
获取用户连接虚拟机的授权条目 |
Get-VMGroup |
获取虚拟机组 |
Get-VMResourcePool |
获取资源池 |
Get-VMMigrationNetwork |
获取实时迁移网络列表 |
Grant / Import
| Cmdlet | 描述 |
|---|---|
Grant-VMConnectAccess |
授权用户连接指定虚拟机 |
Import-VM |
从文件导入虚拟机 |
Import-VMInitialReplication |
从外部介质导入副本虚拟机的初始复制数据 |
Measure / Merge / Mount / Move
| Cmdlet | 描述 |
|---|---|
Measure-VM |
报告虚拟机的资源利用率(CPU/内存/磁盘/网络) |
Measure-VMReplication |
获取虚拟机复制的统计信息 |
Measure-VMResourcePool |
报告资源池的资源利用率 |
Merge-VHD |
合并差异磁盘链到父磁盘 |
Mount-VHD |
挂载虚拟硬盘到宿主机(作为磁盘卷访问) |
Mount-VMHostAssignableDevice |
将设备挂载到宿主机(DDA 场景) |
Move-VM |
将虚拟机实时迁移到另一台宿主机 |
Move-VMStorage |
迁移虚拟机的存储文件到新路径 |
New — 创建资源
| Cmdlet | 描述 |
|---|---|
New-VFD |
创建虚拟软盘(.vfd) |
New-VHD |
创建虚拟硬盘(.vhd 或 .vhdx) |
New-VM |
创建新虚拟机 |
New-VMGroup |
创建虚拟机组 |
New-VMReplicationAuthorizationEntry |
创建副本服务器授权条目 |
New-VMResourcePool |
创建资源池 |
New-VMSan |
创建虚拟 SAN |
New-VMSwitch |
创建虚拟交换机 |
VMGroup 补充说明:Hyper-V 有两种组类型——
VMCollectionType(包含虚拟机)和ManagementCollectionType(包含 VMCollectionType 组)。可嵌套管理,例如先创建包含 VM1/VM2 的组 A 和包含 VM3/VM4 的组 B,再创建包含组 A 和组 B 的管理组。使用Add-VMGroupMember添加成员。
Optimize / Remove
| Cmdlet | 描述 |
|---|---|
Optimize-VHD |
优化动态/差分 VHD 的空间占用(固定磁盘除外) |
Optimize-VHDSet |
优化 VHD Set 文件的空间占用 |
Remove-VHDSnapshot |
从 VHD Set 中移除检查点 |
Remove-VM |
删除虚拟机 |
Remove-VMAssignableDevice |
从虚拟机移除可分配设备 |
Remove-VMDvdDrive |
从虚拟机移除 DVD 驱动器 |
Remove-VMFibreChannelHba |
从虚拟机移除光纤通道 HBA |
Remove-VMGpuPartitionAdapter |
从虚拟机移除 GPU 分区适配器 |
Remove-VMGroup |
删除虚拟机组 |
Remove-VMGroupMember |
从虚拟机组移除成员 |
Remove-VMHardDiskDrive |
从虚拟机移除硬盘 |
Remove-VMHostAssignableDevice |
从宿主机移除可分配设备预留 |
Remove-VMMigrationNetwork |
移除实时迁移网络 |
Remove-VMNetworkAdapter |
从虚拟机移除网络适配器 |
Remove-VMNetworkAdapterAcl |
移除网络适配器上的 ACL |
Remove-VMNetworkAdapterExtendedAcl |
移除网络适配器上的扩展 ACL |
Remove-VMNetworkAdapterRoutingDomainMapping |
移除路由域映射 |
Remove-VMNetworkAdapterTeamMapping |
移除网络适配器与物理网卡的绑定 |
Remove-VMRemoteFx3dVideoAdapter |
移除 RemoteFX 3D 视频适配器(已弃用) |
Remove-VMReplication |
移除虚拟机复制关系 |
Remove-VMReplicationAuthorizationEntry |
移除副本服务器授权条目 |
Remove-VMResourcePool |
删除资源池 |
Remove-VMSan |
删除虚拟 SAN |
Remove-VMSavedState |
删除虚拟机的已保存状态文件 |
Remove-VMScsiController |
从虚拟机移除 SCSI 控制器 |
Remove-VMSnapshot |
删除虚拟机检查点 |
Remove-VMStoragePath |
从存储资源池移除路径 |
Remove-VMSwitch |
删除虚拟交换机 |
Remove-VMSwitchExtensionPortFeature |
移除网络适配器端口的扩展功能 |
Remove-VMSwitchExtensionSwitchFeature |
移除交换机上的扩展功能 |
Remove-VMSwitchTeamMember |
从虚拟交换机组移除成员 |
Rename / Repair / Reset / Resize
| Cmdlet | 描述 |
|---|---|
Rename-VM |
重命名虚拟机 |
Rename-VMGroup |
重命名虚拟机组 |
Rename-VMNetworkAdapter |
重命名虚拟网络适配器 |
Rename-VMResourcePool |
重命名资源池 |
Rename-VMSan |
重命名虚拟 SAN |
Rename-VMSnapshot |
重命名虚拟机检查点 |
Rename-VMSwitch |
重命名虚拟交换机 |
Repair-VM |
修复一台或多台配置损坏的虚拟机 |
Reset-VMReplicationStatistics |
重置虚拟机复制统计数据 |
Reset-VMResourceMetering |
重置资源计量计数器 |
Resize-VHD |
调整虚拟硬盘大小(仅支持 VHDX) |
Restart / Restore / Resume / Revoke
| Cmdlet | 描述 |
|---|---|
Restart-VM |
重启虚拟机(通过 Guest OS 或强制电源循环) |
Restore-VMSnapshot |
将虚拟机恢复到指定检查点 |
Resume-VM |
恢复已暂停的虚拟机 |
Resume-VMReplication |
恢复处于暂停/错误/等待重新同步状态的复制 |
Revoke-VMConnectAccess |
撤销用户连接虚拟机的权限 |
Save / Set — 配置与保存
虚拟机核心配置
| Cmdlet | 描述 |
|---|---|
Save-VM |
保存虚拟机运行状态到磁盘 |
Set-VM |
配置虚拟机属性(名称、内存、处理器、检查点类型等) |
Set-VMBios |
配置第一代虚拟机的 BIOS 启动顺序 |
Set-VMComPort |
配置虚拟机 COM 端口路径 |
Set-VMDvdDrive |
配置 DVD 驱动器挂载的 ISO/物理光驱 |
Set-VMFirmware |
配置第二代虚拟机的 UEFI 设置(安全启动、启动顺序等) |
Set-VMFloppyDiskDrive |
配置软盘驱动器挂载路径 |
Set-VMHardDiskDrive |
配置虚拟硬盘挂载的 VHD/VHDX 文件 |
Set-VMMemory |
配置虚拟机内存(动态内存、最小值/最大值/缓冲区) |
Set-VMProcessor |
配置虚拟处理器数量、资源池、NUMA 亲和性等 |
Set-VMVideo |
配置虚拟机视频分辨率 |
Set-VMSecurity |
配置虚拟机安全设置(加密、TPM、安全启动等) |
Set-VMSecurityPolicy |
配置虚拟机安全策略 |
宿主机配置
| Cmdlet | 描述 |
|---|---|
Set-VMHost |
配置宿主机(默认路径、实时迁移、内存上限等) |
Set-VMHostCluster |
配置虚拟机主机集群 |
Set-VMHostPartitionableGpu |
配置可分区 GPU 的分区数量 |
网络
| Cmdlet | 描述 |
|---|---|
Set-VMNetworkAdapter |
配置虚拟网络适配器(交换机连接、MAC、带宽等) |
Set-VMNetworkAdapterFailoverConfiguration |
配置故障切换 IP |
Set-VMNetworkAdapterIsolation |
配置网络适配器隔离(VLAN/NVGRE) |
Set-VMNetworkAdapterRoutingDomainMapping |
配置路由域上的虚拟子网 |
Set-VMNetworkAdapterTeamMapping |
配置网络适配器与物理网卡的绑定 |
Set-VMNetworkAdapterVlan |
配置网络适配器 VLAN |
Set-VMSwitch |
配置虚拟交换机属性 |
Set-VMSwitchExtensionPortFeature |
配置端口级扩展功能参数 |
Set-VMSwitchExtensionSwitchFeature |
配置交换机级扩展功能参数 |
Set-VMSwitchTeam |
配置虚拟交换机组 |
存储与复制
| Cmdlet | 描述 |
|---|---|
Set-VHD |
设置虚拟硬盘属性(父路径、磁盘类型等) |
Set-VMFibreChannelHba |
配置虚拟光纤通道 HBA |
Set-VMGpuPartitionAdapter |
配置 GPU 分区参数(显存、算力等) |
Set-VMKeyProtector |
配置虚拟机 TPM 密钥保护器 |
Set-VMSan |
配置虚拟 SAN |
Set-VMReplication |
修改虚拟机复制设置 |
Set-VMReplicationAuthorizationEntry |
修改副本服务器授权条目 |
Set-VMReplicationServer |
将宿主机配置为副本服务器 |
Set-VMResourcePool |
设置资源池的父池 |
Start / Stop / Suspend
| Cmdlet | 描述 |
|---|---|
Start-VM |
启动虚拟机 |
Start-VMFailover |
在副本服务器上启动故障切换 |
Start-VMInitialReplication |
开始虚拟机的初始复制 |
Start-VMTrace |
开始虚拟机追踪记录 |
Stop-VM |
关闭、关机或保存虚拟机 |
Stop-VMFailover |
取消正在进行的故障切换 |
Stop-VMInitialReplication |
停止正在进行的初始复制 |
Stop-VMReplication |
取消正在进行的复制重新同步 |
Stop-VMTrace |
停止虚拟机追踪记录 |
Suspend-VM |
暂停虚拟机(冻结 CPU 状态,内存保持在宿主机) |
Suspend-VMReplication |
暂停虚拟机复制 |
Test / Update
| Cmdlet | 描述 |
|---|---|
Test-VHD |
测试虚拟硬盘是否有导致不可用的错误 |
Test-VMNetworkAdapter |
测试虚拟机之间的网络连通性 |
Test-VMReplicationConnection |
测试主服务器与副本服务器之间的复制连接 |
Update-VMVersion |
将虚拟机配置版本升级到当前宿主机支持的最高版本 |
已弃用标记
以下 cmdlet 与 RemoteFX 相关,自 Windows 10 2004 / Windows Server 2022 起已移除或不可用,仅保留在旧版本中:
Add-VMRemoteFx3dVideoAdapterGet-VMRemoteFx3dVideoAdapterGet-VMRemoteFXPhysicalVideoAdapterRemove-VMRemoteFx3dVideoAdapterSet-VMRemoteFx3dVideoAdapterEnable-VMRemoteFXPhysicalVideoAdapterDisable-VMRemoteFXPhysicalVideoAdapter
GPU 虚拟化请改用
Add-VMGpuPartitionAdapter/Set-VMGpuPartitionAdapter(GPU-PV 方案)。
在 PowerShell 中安装和部署 Hyper-V 相关组件时,可以使用 Install-WindowsFeature 或 Enable-WindowsOptionalFeature 命令来安装所需的功能。以下是安装 Hyper-V 相关组件的常用命令,以及它们的分类和描述。
Disable-WindowsOptionalFeature (Dism) | Microsoft Learn
Enable-WindowsOptionalFeature (Dism) | Microsoft Learn
Install-WindowsFeature (ServerManager) | Microsoft Learn
PowerShell 安装 Hyper-V 组件命令分类
| 命令分类 | 命令 | 说明 |
|---|---|---|
| Hyper-V 核心功能 | Install-WindowsFeature -Name Hyper-V |
安装 Hyper-V 虚拟化平台的核心功能。 |
| Hyper-V 管理工具 | Install-WindowsFeature -Name RSAT-Hyper-V-Tools |
安装远程服务器管理工具(RSAT)中的 Hyper-V 管理工具。 |
| Hyper-V PowerShell 模块 | Install-WindowsFeature -Name Hyper-V-PowerShell |
安装 Hyper-V PowerShell 模块,以便通过命令行管理虚拟机。 |
| Hyper-V 管理控制台 | Install-WindowsFeature -Name Hyper-V-Tools |
安装 Hyper-V 管理控制台,用于图形化管理虚拟机。 |
| 虚拟机监控功能 | Install-WindowsFeature -Name Hyper-V-Management-Clients |
安装用于虚拟机管理的客户端工具(如 Hyper-V 管理器)。 |
| Hyper-V 服务组件 | Install-WindowsFeature -Name Hyper-V-Services |
安装 Hyper-V 服务组件。 |
| Hyper-V 资源管理工具 | Install-WindowsFeature -Name Hyper-V-Resource-Manager |
安装 Hyper-V 资源管理器,用于管理 Hyper-V 环境的资源。 |
命令示例
-
安装 Hyper-V 核心功能
- 这是启用 Hyper-V 虚拟化平台的核心功能。
powershellCopy CodeInstall-WindowsFeature -Name Hyper-V -
安装 Hyper-V 管理工具(RSAT)
- 安装 Hyper-V 管理工具,包括远程服务器管理工具(RSAT)。这些工具可以帮助你通过图形界面或命令行管理 Hyper-V 主机。
powershellCopy CodeInstall-WindowsFeature -Name RSAT-Hyper-V-Tools -
安装 Hyper-V PowerShell 模块
- 安装 Hyper-V PowerShell 模块,允许你通过 PowerShell 命令行来管理 Hyper-V 主机和虚拟机。
powershellCopy CodeInstall-WindowsFeature -Name Hyper-V-PowerShell -
安装 Hyper-V 管理控制台
- 安装 Hyper-V 管理控制台,用于图形化管理虚拟机。
powershellCopy CodeInstall-WindowsFeature -Name Hyper-V-Tools -
安装 Hyper-V 服务组件
- 安装 Hyper-V 服务组件,确保虚拟化环境运行所需的所有服务。
powershellCopy CodeInstall-WindowsFeature -Name Hyper-V-Services -
安装 Hyper-V 资源管理工具
- 安装 Hyper-V 资源管理器,用于管理 Hyper-V 环境中的资源分配。
powershellCopy CodeInstall-WindowsFeature -Name Hyper-V-Resource-Manager -
安装虚拟机监控工具
- 安装用于虚拟机管理和监控的客户端工具。
powershellCopy CodeInstall-WindowsFeature -Name Hyper-V-Management-Clients -
重启计算机
- 安装完 Hyper-V 组件后,通常需要重启计算机使更改生效。
powershellCopy CodeRestart-Computer
验证安装
在安装完 Hyper-V 相关组件后,您可以使用以下命令来验证是否成功安装:
-
检查 Hyper-V 功能是否安装:
powershellCopy CodeGet-WindowsFeature -Name Hyper-V -
检查 Hyper-V PowerShell 模块是否加载:
powershellCopy CodeGet-Module -ListAvailable Hyper-V -
确认 Hyper-V 服务状态:
powershellCopy CodeGet-Service -Name vmms -
检查虚拟化是否启用:
powershellCopy Codesysteminfo | findstr /i "virtualization"
总结
通过 PowerShell,您可以快速部署和管理 Hyper-V 组件,帮助您建立虚拟化环境。根据您的需要,可以选择安装核心功能、管理工具、PowerShell 模块或图形化控制台等。安装完成后,记得重启计算机以确保功能生效。如果需要更多定制化的管理,可以使用 Get-WindowsFeature 来确认所需的功能是否已成功安装。
在 PowerShell 中操作 Hyper-V 可以通过一组命令来管理虚拟机、虚拟交换机、存储以及其他 Hyper-V 组件。以下是常用 Hyper-V PowerShell 命令的分类及表格化说明。
Hyper-V PowerShell 命令概览
| 命令分类 | 命令 | 说明 |
|---|---|---|
| 虚拟机管理 | New-VM |
创建新的虚拟机。 |
Get-VM |
获取虚拟机的状态和详细信息。 | |
Start-VM |
启动虚拟机。 | |
Stop-VM |
停止虚拟机。 | |
Restart-VM |
重启虚拟机。 | |
Set-VM |
配置虚拟机的属性,如内存、CPU、启动顺序等。 | |
Remove-VM |
删除虚拟机。 | |
| 虚拟交换机管理 | New-VMSwitch |
创建新的虚拟交换机。 |
Get-VMSwitch |
获取虚拟交换机的详细信息。 | |
Set-VMSwitch |
配置虚拟交换机的属性,如网络适配器、VLAN等。 | |
Remove-VMSwitch |
删除虚拟交换机。 | |
| 虚拟硬盘管理 | New-VHD |
创建新的虚拟硬盘(VHD/VHDX)。 |
Get-VHD |
获取虚拟硬盘的详细信息。 | |
Resize-VHD |
扩展或收缩虚拟硬盘的大小。 | |
Convert-VHD |
转换虚拟硬盘格式(VHD 到 VHDX,或 VHDX 到 VHD)。 | |
Remove-VHD |
删除虚拟硬盘。 | |
| 存储管理 | Get-VMHardDiskDrive |
获取虚拟机的硬盘驱动器配置。 |
Add-VMHardDiskDrive |
将虚拟硬盘驱动器附加到虚拟机。 | |
Remove-VMHardDiskDrive |
从虚拟机移除虚拟硬盘驱动器。 | |
| 快照管理 | Checkpoint-VM |
创建虚拟机的检查点(快照)。 |
Get-VMCheckpoint |
获取虚拟机的检查点。 | |
Restore-VMCheckpoint |
恢复虚拟机到指定的检查点。 | |
Remove-VMCheckpoint |
删除虚拟机的检查点。 | |
| 网络管理 | Add-VMNetworkAdapter |
向虚拟机添加网络适配器。 |
Get-VMNetworkAdapter |
获取虚拟机的网络适配器信息。 | |
Set-VMNetworkAdapter |
配置虚拟机的网络适配器设置,如静态 IP、VLAN、网络连接等。 | |
Remove-VMNetworkAdapter |
从虚拟机移除网络适配器。 | |
| 虚拟机集群管理 | New-VMGroup |
创建新的虚拟机组。 |
Add-VMToGroup |
将虚拟机添加到虚拟机组。 | |
Remove-VMFromGroup |
将虚拟机从虚拟机组中移除。 | |
| 性能监控 | Get-VMProcessor |
获取虚拟机的 CPU 使用情况。 |
Get-VMMemory |
获取虚拟机的内存使用情况。 | |
Get-VMNetworkAdapterPerformance |
获取虚拟机网络适配器的性能信息。 | |
| 虚拟机备份与恢复 | Export-VM |
导出虚拟机及其配置。 |
Import-VM |
导入虚拟机及其配置。 | |
| 集群管理 | Enable-VMReplication |
启用虚拟机复制。 |
Set-VMReplication |
配置虚拟机复制的设置。 | |
Get-VMReplication |
获取虚拟机复制的状态和详细信息。 | |
Disable-VMReplication |
禁用虚拟机复制。 | |
| 虚拟机驱动管理 | Get-VMIntegrationService |
获取虚拟机集成服务的信息。 |
Enable-VMIntegrationService |
启用虚拟机集成服务。 | |
Disable-VMIntegrationService |
禁用虚拟机集成服务。 |
详细命令示例
1. 虚拟机管理命令
-
创建虚拟机:
powershellCopy CodeNew-VM -Name "TestVM" -MemoryStartupBytes 2GB -Path "C:\VMs" -
启动虚拟机:
powershellCopy CodeStart-VM -Name "TestVM" -
停止虚拟机:
powershellCopy CodeStop-VM -Name "TestVM" -
重启虚拟机:
powershellCopy CodeRestart-VM -Name "TestVM"
2. 虚拟硬盘管理命令
-
创建虚拟硬盘:
powershellCopy CodeNew-VHD -Path "C:\VMs\TestVM.vhdx" -SizeBytes 50GB -Dynamic -
获取虚拟硬盘信息:
powershellCopy CodeGet-VHD -Path "C:\VMs\TestVM.vhdx" -
调整虚拟硬盘大小:
powershellCopy CodeResize-VHD -Path "C:\VMs\TestVM.vhdx" -SizeBytes 100GB
3. 虚拟交换机管理命令
-
创建虚拟交换机:
powershellCopy CodeNew-VMSwitch -Name "ExternalSwitch" -NetAdapterName "Ethernet" -AllowManagementOS $True -
获取虚拟交换机信息:
powershellCopy CodeGet-VMSwitch
4. 虚拟机快照命令
-
创建虚拟机快照:
powershellCopy CodeCheckpoint-VM -Name "TestVM" -SnapshotName "Snapshot1" -
恢复虚拟机快照:
powershellCopy CodeRestore-VMCheckpoint -VMName "TestVM" -Name "Snapshot1"
5. 网络适配器管理
-
添加网络适配器:
powershellCopy CodeAdd-VMNetworkAdapter -VMName "TestVM" -Name "Ethernet Adapter" -
获取网络适配器信息:
powershellCopy CodeGet-VMNetworkAdapter -VMName "TestVM"
PowerShell 提供了一系列强大的命令来管理 Hyper-V 环境,涵盖了虚拟机创建、启动、管理、虚拟硬盘操作、快照管理、网络适配器管理等任务。通过 PowerShell,您可以更高效地自动化和配置 Hyper-V 环境,特别适合大规模的虚拟化部署。
PowerShell 安装 Hyper-V 组件命令参考
一、两条核心命令对比
| 特性 | Install-WindowsFeature |
Enable-WindowsOptionalFeature |
|---|---|---|
| 适用系统 | Windows Server(服务器核心/GUI 均可) | Windows 10/11 客户端版本 |
| 所属模块 | ServerManager |
Dism |
| 是否需要重启 | 部分功能需要(-Restart 参数) |
同左 |
| 管理作用域 | 服务器角色和功能 | Windows 可选功能(更细粒度) |
二、Windows Server 场景
1. 安装完整 Hyper-V 平台
# 安装 Hyper-V 全部组件(含管理工具)
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
# 不自动重启,仅安装
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools
安装后输出示例:
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True Yes SuccessRest... {Hyper-V, Hyper-V PowerShell, Hyper-V GUI Mgmt...
2. 仅安装 Hyper-V PowerShell 管理模块
Install-WindowsFeature -Name Hyper-V-PowerShell
适用于远程管理场景:在无 GUI 的服务器上只装 PowerShell 模块,从另一台机器用
Hyper-V模块远程操控。
3. 按子功能逐个安装
# Hyper-V 核心服务(必须)
Install-WindowsFeature -Name Hyper-V
# Hyper-V 图形管理工具(Hyper-V 管理器)
Install-WindowsFeature -Name Hyper-V-Tools
# Hyper-V PowerShell 模块
Install-WindowsFeature -Name Hyper-V-PowerShell
# Hyper-V 管理控制台(不含 PowerShell 模块)
Install-WindowsFeature -Name Hyper-V-Management-Clients
# Hyper-V 管理服务端(允许远程连接到此服务器的 VMMS)
Install-WindowsFeature -Name Hyper-V-Management-PowerShell
4. 查看已安装/可安装状态
# 查看所有 Hyper-V 相关功能的状态
Get-WindowsFeature -Name Hyper-V*
# 输出关键列
Get-WindowsFeature -Name Hyper-V* | Format-Table Name, DisplayName, Installed, InstallState -AutoSize
5. 卸载 Hyper-V
# 卸载全部 Hyper-V 组件
Uninstall-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
三、Windows 10/11 客户端场景
1. 启用 Hyper-V 平台
# 必须以管理员身份运行
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -NoRestart
2. 按子功能逐个启用
# Hyper-V 平台核心
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -NoRestart
# Hyper-V 管理工具(图形界面 + PowerShell)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Tools-All -NoRestart
# 仅 Hyper-V PowerShell 模块
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell -NoRestart
# 仅 Hyper-V 图形管理器
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-Clients -NoRestart
# Hyper-V 虚拟机监控程序平台(Hypervisor 本体)
Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform -NoRestart
# 虚拟机平台(WSL2 等依赖此项,不等于完整 Hyper-V)
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
3. 查看功能状态
# 查看 Hyper-V 相关可选功能状态
Get-WindowsOptionalFeature -Online -FeatureName *Hyper-V* | Format-Table FeatureName, State -AutoSize
# 查看虚拟化平台相关
Get-WindowsOptionalFeature -Online -FeatureName *Virtual* | Format-Table FeatureName, State -AutoSize
4. 禁用 Hyper-V
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -NoRestart
四、完整安装脚本(生产可用)
Server 端自动化安装
<#
.SYNOPSIS
自动安装并配置 Hyper-V 服务器
.NOTES
需要以管理员权限运行
#>
# 要求:至少 Windows Server 2016
$osInfo = Get-CimInstance Win32_OperatingSystem
if ($osInfo.ProductType -ne 3) {
Write-Warning "此脚本仅适用于 Windows Server,当前系统: $($osInfo.Caption)"
exit 1
}
# 检查是否已安装
$installed = (Get-WindowsFeature -Name Hyper-V).Installed
if ($installed) {
Write-Host "[跳过] Hyper-V 已安装" -ForegroundColor Yellow
} else {
Write-Host "[安装] 正在安装 Hyper-V 平台及管理工具..." -ForegroundColor Cyan
$result = Install-WindowsFeature -Name Hyper-V -IncludeManagementTools
if ($result.Success) {
Write-Host "[完成] 安装成功" -ForegroundColor Green
if ($result.RestartNeeded) {
Write-Host "[重启] 需要重启系统才能生效" -ForegroundColor Yellow
$answer = Read-Host "是否立即重启?(Y/N)"
if ($answer -eq 'Y') {
Restart-Computer -Force
}
}
} else {
Write-Host "[失败] 安装过程中出现错误" -ForegroundColor Red
exit 1
}
}
# 安装后验证
Write-Host "`n--- 安装状态验证 ---" -ForegroundColor Cyan
Get-WindowsFeature -Name Hyper-V* |
Where-Object { $_.Installed } |
Format-Table Name, DisplayName, InstallState -AutoSize
# 验证虚拟机监控程序是否运行
$hypervisor = Get-CimInstance Win32_ComputerSystem | Select-Object -ExpandProperty HypervisorPresent
if ($hypervisor) {
Write-Host "[验证] 虚拟机监控程序: 已运行" -ForegroundColor Green
} else {
Write-Host "[验证] 虚拟机监控程序: 未运行(可能需要重启)" -ForegroundColor Yellow
}
客户端自动化安装
<#
.SYNOPSIS
Windows 10/11 上启用 Hyper-V
.NOTES
需要以管理员权限运行
部分家庭版 SKU 不支持完整 Hyper-V,但可启用 VirtualMachinePlatform 供 WSL2 使用
#>
# 检查 SKU
$sku = (Get-CimInstance Win32_OperatingSystem).OperatingSystemSKU$skuName = switch ($sku) {
4 { 'Enterprise' }
48 { 'Professional' }
72 { 'Enterprise' }
101 { 'Professional' }
default { "未知/家庭版 (SKU=$sku)" }
}
Write-Host "当前版本: $($skuName)"
# 检查 CPU 虚拟化支持
$cpu = Get-CimInstance Win32_Processor$vmSupported = $cpu.VirtualizationFirmwareEnabled
if (-not $vmSupported) {
Write-Warning "CPU 虚拟化未在 BIOS 中启用,Hyper-V 无法正常工作"
}
# 启用完整 Hyper-V
try {
Write-Host "[启用] Microsoft-Hyper-V-All..." -ForegroundColor Cyan
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -NoRestart -ErrorAction Stop
Write-Host "[完成] 已启用,需重启系统" -ForegroundColor Green
} catch {
Write-Warning "完整 Hyper-V 不可用: $_"
Write-Host "[回退] 尝试启用 VirtualMachinePlatform(WSL2 依赖)..." -ForegroundColor Cyan
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
}
五、功能名称速查表
Server (Install-WindowsFeature)
| 功能名称 | 说明 | 是否需要重启 |
|---|---|---|
Hyper-V |
Hyper-V 平台核心(含虚拟机监控程序) | 是 |
Hyper-V-Tools |
所有管理工具(GUI + PowerShell) | 否 |
Hyper-V-PowerShell |
Hyper-V PowerShell 模块 | 否 |
Hyper-V-Management-Clients |
仅图形管理控制台 | 否 |
Hyper-V-Management-PowerShell |
仅 PowerShell 远程管理接口 | 否 |
Client (Enable-WindowsOptionalFeature)
| 功能名称 | 说明 | 是否需要重启 |
|---|---|---|
Microsoft-Hyper-V-All |
全部 Hyper-V 组件 | 是 |
Microsoft-Hyper-V |
Hyper-V 平台核心 | 是 |
Microsoft-Hyper-V-Tools-All |
全部管理工具 | 否 |
Microsoft-Hyper-V-Management-PowerShell |
PowerShell 模块 | 否 |
Microsoft-Hyper-V-Management-Clients |
图形管理器 | 否 |
HypervisorPlatform |
虚拟机监控程序平台 | 是 |
VirtualMachinePlatform |
轻量虚拟机平台(WSL2 依赖) | 是 |
六、常见问题
Q: 安装后 Get-VM 报错"Hyper-V 未运行"
# 确认虚拟机监控程序状态
Get-CimInstance Win32_ComputerSystem | Select-Object HypervisorPresent
# 返回 False → 重启系统;仍 False → 检查 BIOS 中 VT-x/AMD-V 是否开启
Q: Windows 家庭版能否安装 Hyper-V
# 家庭版没有完整 Hyper-V,但可启用 VirtualMachinePlatform
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
# 这足以支撑 WSL2,但无法创建和运行完整虚拟机
Q: 如何通过 DISM 替代 Enable-WindowsOptionalFeature
# 效果完全相同,Dism 模块的底层调用
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V-All /norestart
powershell 查询 组件
Get-WindowsFeature

powershell 安装hyper-v组件
Install-WindowsFeature -Name Hyper-V
Install-WindowsFeature -Name RSAT-Hyper-V-Tools
Install-WindowsFeature -Name Hyper-V-Tools
Install-WindowsFeature -Name Hyper-V-PowerShell Restart-Computer
PowerShell 中配置本机的 Hyper-V 虚拟交换网络,可以使用以下命令:
powershell New-VMSwitch -Name "虚拟交换机名称" -SwitchType "交换机类型"
请将以下参数替换为适当的值: "虚拟交换机名称":要创建的虚拟交换机的名称。
"交换机类型":虚拟交换机的类型。
常见的类型包括 "External"(外部网络)、"Internal"(内部网络)和 "Private"(私有网络)。
以下是几个示例命令:
创建一个外部网络交换机,连接到物理网络上:
powershell New-VMSwitch -Name "ExternalSwitch" -SwitchType External
创建一个内部网络交换机,用于虚拟机之间的通信:
powershell
New-VMSwitch -Name "InternalSwitch" -SwitchType Internal
创建一个私有网络交换机,仅供虚拟机内部使用:
powershell
New-VMSwitch -Name "PrivateSwitch" -SwitchType Private
运行这些命令后,将创建相应类型的虚拟交换机,并可以在 Hyper-V 管理器中进行配置和管理。
PowerShell 中创建一个带有镜像 ISO 的 Hyper-V 虚拟机,可以使用以下命令:
powershell New-VM -Name "虚拟机名称" -MemoryStartupBytes 内存大小 -NewVHDSizeBytes 硬盘大小 -Path "虚拟机路径" -SwitchName "虚拟交换机名称" Set-VMDvdDrive -VMName "虚拟机名称" -Path "ISO文件路径"
请将以下参数替换为适当的值: "虚拟机名称":要创建的虚拟机的名称。
内存大小:虚拟机的初始内存大小,以字节为单位。
例如,可以使用 1GB 的内存,表示为 1GB 或 1GB -as [Byte]。
硬盘大小:虚拟机的硬盘大小,以字节为单位。
例如,可以使用 100GB 的硬盘,表示为 100GB 或 100GB -as [Byte]。 "虚拟机路径":虚拟机的保存路径。
"虚拟交换机名称":虚拟机连接的虚拟交换机的名称。 "ISO文件路径":要挂载到虚拟机的镜像 ISO 文件的路径。
以下是一个示例命令:
powershell New-VM -Name "MyVM" -MemoryStartupBytes 1GB -NewVHDSizeBytes 100GB -Path "C:\Virtual Machines" -SwitchName "ExternalSwitch" Set-VMDvdDrive -VMName "MyVM" -Path "C:\ISO\myiso.iso"
运行此命令后,将在指定的路径下创建名为 "MyVM" 的新虚拟机,并分配 1GB 的内存和 100GB 的硬盘空间。
该虚拟机将连接到名为 "ExternalSwitch" 的虚拟交换机,并挂载位于 "C:\ISO\myiso.iso" 的镜像 ISO 文件。
请注意,在创建虚拟机之前,请确保已安装 Hyper-V 角色并配置好所需的网络设置和存储位置。
根据需要,您可以根据特定的环境和需求进行调整。
启动 开机 Start-VM -Name "虚拟机名称"
关闭 关机 Stop-VM -Name "虚拟机名称" -Force
创建 检查点(快照) Checkpoint-VM -Name "虚拟机名称" -SnapshotName "检查点名称"
主检查点是虚拟机的状态的完整副本,包括内存、磁盘和配置。
创建主检查点后,可以还原到该检查点的状态。
子检查点是基于主检查点创建的附加检查点,它记录了主检查点之后的更改。
子检查点只能应用于先前的主检查点,而不能直接创建子检查点。
创建主检查点:
powershell Checkpoint-VM -Name "虚拟机名称" -SnapshotName "
主检查点名称" 在主检查点的基础上创建子检查点:
powershell New-VMSnapshot -VMName "虚拟机名称" -Name "子检查点名称" -SnapshotName "
主检查点名称" 还原 检测点(快照) Restore-VMSnapshot -VMName "虚拟机名称" -Name "
检查点名称" 导出 (备份) Export-VM -Name "虚拟机名称" -Path "导出路径" 导入 (还原) Import-VM -Path "导入路径"
增加CPU数量 为5 自定义
Set-VMProcessor -VMName "虚拟机名称" -Count 5
增加内存容量 为10G 自定义
Set-VMMemory -VMName "虚拟机名称" -StartupBytes 10GB
查询所有设备
Get-PnpDevice
查询GPU设备
Get-PnpDevice | Where-Object {$_.Class -eq "Display"} | Select-Object FriendlyName, InstanceId GPU
分配给虚拟机
Add-VMAssignableDevice -VMName "虚拟机名称" -LocationPath "
GPU的InstanceId" 在 Windows Server 2022 中,启用 Hyper-V 和 DDA 功能的命令
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform
PowerShell 中为指定的 Hyper-V 虚拟机创建群集,可以使用以下命令:
powershell
Add-ClusterVirtualMachineRole -VMName "虚拟机名称" -Cluster "群集名称"
请将以下参数替换为适当的值: "虚拟机名称":要添加到群集的虚拟机的名称。
"群集名称":要将虚拟机添加到其中的群集的名称。
以下是一个示例命令:
powershell
Add-ClusterVirtualMachineRole -VMName "MyVM" -Cluster "MyCluster"
运行此命令后,指定的虚拟机将被添加到指定的群集中。
请注意,在将虚拟机添加到群集之前,必须先创建群集并配置其基础结构。
PowerShell 中为指定的 Hyper-V 虚拟机启用复制,可以使用以下命令:
powershell
Enable-VMReplication -VMName "虚拟机名称" -ReplicaServerName "复制服务器名称" -ReplicaServerPort 端口号 -AuthenticationType "认证类型"
请将以下参数替换为适当的值:
"虚拟机名称":要启用复制的虚拟机的名称。
"复制服务器名称":用于存储复制副本的复制服务器的名称或 IP 地址。 端口号:复制服务器上用于接收复制数据的端口号。
通常情况下,默认端口号为 80。
"认证类型":指定用于身份验证的方法。常见的选项包括 Kerberos、Certificate 和 CredSSP。
以下是一个示例命令:
powershell Enable-VMReplication -VMName "MyVM" -ReplicaServerName "ReplicaServer01" -ReplicaServerPort 80 -AuthenticationType "Kerberos"
运行此命令后,指定的虚拟机将启用复制,并将其副本发送到指定的复制服务器。
PowerShell 中将指定的 Hyper-V 虚拟机移动到不同的 Hyper-V 主机上,可以使用以下命令:
powershell Move-VM -Name "虚拟机名称" -DestinationHost "目标主机名称" -IncludeStorage -DestinationStoragePath "目标存储路径"
请将以下参数替换为适当的值: "虚拟机名称":要移动的虚拟机的名称。 "目标主机名称":要将虚拟机移动到其中的目标 Hyper-V 主机的名称或 IP 地址。 "目标存储路径":虚拟机的新存储位置。如果未指定,则使用与源主机相同的存储位置。
以下是一个示例命令:
powershell
Move-VM -Name "MyVM" -DestinationHost "NewHost" -IncludeStorage -DestinationStoragePath "D:\Virtual Machines\MyVM"
运行此命令后,指定的虚拟机将被移动到指定的目标主机和存储位置。
远程桌面 Mstsc RDP
@echo off
:: 启用将硬件图形适配器应用于所有远程桌面服务会话
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fEnableHardwareGraphicsAcceleration" /t REG_DWORD /d "1" /f
:: 启用配置远程桌面连接的 H.264/AVC 硬件编码
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client" /v "fClientAllowHWCodec" /t REG_DWORD /d "1" /f
:: 启用为远程桌面连接设置 H.264/AVC 444 图形模式的优先级
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client" /v "fClientSetAVC444Enabled" /t REG_DWORD /d "1" /f
:: 配置 Remote FX 数据压缩
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client" /v "fClientRemoteFXCompression" /t REG_DWORD /d "1" /f
:: 启用为远程桌面连接使用 WDDM 图形显示驱动程序
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client" /v "fClientUseWddmDriver" /t REG_DWORD /d "1" /f
:: 解除30帧率限制
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations" /v "DWMFRAMEINTERVAL" /t REG_DWORD /d "15" /f
⚠️ 重要提示
1. 网络性能与兼容性优化
🚀 启用/调整虚拟机队列 (VMQ)
- 适用场景: 高网络吞吐需求,如文件服务器、Web 服务。
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} - 操作说明:
- 在该路径下,你会看到多个以数字命名的子项(如
0000,0001),它们代表不同的网络适配器。你需要找到对应物理网卡的那一项。 - 查找或新建名为
*MaxVMQ或*NumVMQ的 DWORD 值(具体名称取决于网卡驱动,有时在网卡属性的高级选项卡中直接设置更佳)。 - 注意: 如果主机开启了 VMQ 但虚拟交换机未开启,或者配置不当,可能会导致虚拟机断网。如果遇到迁移后网络丢失的问题,可以尝试在注册表中禁用 VMQ 相关键值。
- 在该路径下,你会看到多个以数字命名的子项(如
🌐 解决 IPv4/IPv6 解析优先级问题
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters - 键值名称:
DisabledComponents - 类型: DWORD (32-bit)
- 推荐值:
0x20(十六进制) - 效果: 此设置不会禁用 IPv6,而是让系统优先使用 IPv4。这可以解决通过机器名访问虚拟机时解析缓慢或失败的问题。修改后需重启。
2. Hyper-V 副本 (Replication) 性能调优
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication
📥 调整最大并发传输数 (MaximumActiveTransfers)
- 键值名称:
MaximumActiveTransfers - 类型: DWORD
- 默认值: 3
- 优化建议:
- 如果你的网络带宽很大,且有很多虚拟机需要同步,增加此值(如设为 5 或 8)可以加快整体同步速度。
- 如果带宽有限,保持默认或减小该值可以避免网络拥塞影响其他业务。
⚙️ 限制单台 VM 的并发磁盘操作 (ApplyVHDLimit)
- 键值名称:
ApplyVHDLimit - 默认行为: 若不存在,默认为每个 VM 并行处理 4 个 VHD。
- 优化建议: 如果虚拟机拥有大量磁盘(如 10 个以上),适当增加此值可能提升复制应用速度,但会增加磁盘 I/O 压力。
3. 故障排查与特定 Bug 修复
🔐 修复实时迁移/身份验证失败
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002 - 操作: 确保该键存在。如果缺失,需从正常的服务器导出并导入该键,然后重启服务。
🚫 禁用证书吊销检查 (实验室环境)
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication - 键值名称:
DisableCertRevocationCheck - 值:
1(启用禁用检查) - 注意: 仅限实验室环境使用,生产环境请勿关闭安全检查。
🛠️ 修复 WWPN 生成器错误
- 操作: 检查相关注册表值是否在定义范围内,需根据具体错误日志调整。
4. 通用性能最佳实践 (非注册表)
| 优化项 | 推荐操作 | 说明 |
|---|---|---|
| 虚拟磁盘类型 | 使用 固定大小 (Fixed Size) VHDX | 相比动态扩展磁盘,固定大小磁盘在创建时分配所有空间,性能更好,碎片更少。 |
| 集成服务 | 保持最新 | 确保虚拟机内安装了最新的 Hyper-V 集成服务(现代 Windows 自动更新包含),这对驱动性能至关重要。 |
| NUMA 跨越 | 启用虚拟 NUMA | 对于大型虚拟机,确保虚拟 NUMA 设置与物理硬件拓扑匹配,避免跨节点访问内存带来的延迟。 |
| 内存管理 | 谨慎使用动态内存 | 对于数据库(SQL Server)等高负载应用,建议使用静态内存,避免动态内存回收导致的性能抖动。 |
🚀 进阶硬件与驱动调优
1. 优化存储控制器驱动 (StorVSC / StorSpce)
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\StorVSC\Parameters\Device - 说明: 这里通常用于配置特定设备的参数。虽然现代 Windows 版本自动管理得很好,但在极少数高延迟存储场景下,管理员可能会在此处调整
QueueDepth(队列深度)等值,以平衡吞吐量和延迟。
2. 禁用/启用特定设备直通 (DDA) 相关设置
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMBus - 操作: 在进行 DDA 操作时,有时需要手动在注册表中清理残留的设备节点,或者调整 VMBus 的枚举策略,以确保物理设备能被虚拟机正确识别并独占使用。
🛡️ 解决冲突与兼容性 (与 VMware/VirtualBox)
1. 禁用基于虚拟化的安全 (VBS) / 设备防护
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard - 键值名称:
EnableVirtualizationBasedSecurity - 类型: DWORD
- 优化值:
0 - 效果: 设置为 0 可彻底禁用 VBS。修改后通常需要重启。这能释放 Hypervisor 资源,显著提升嵌套虚拟化的性能(例如在 Hyper-V 里运行 VMware,或者在 VMware 里运行 Hyper-V)。
2. 清理残留的网络适配器
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} - 操作: 浏览各个数字子项(如
0001,0002),查看DriverDesc值。如果发现 VMware 或 VirtualBox 相关的网卡描述,且设备管理器中已不可见,可以删除该子项以清理残留配置。
💾 第三方软件集成优化 (NetApp SnapManager)
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\NetApp\SnapManager for Hyper-V\Server\<hostname> - 键值名称:
snapinfo_snaps_count - 类型: DWORD
- 优化建议: 默认情况下,SnapManager 可能保留 30 个快照。如果你的备份窗口较短或存储空间紧张,可以通过修改此值(例如改为 10 或 15)来减少保留的快照数量,从而释放存储 LUN 的空间并加快备份循环速度。
🧹 系统与文件完整性修复
使用 SFC 修复系统文件
- 命令:
sfc /scannow - 作用: 扫描并修复受保护的 Windows 系统文件。Hyper-V 依赖大量底层系统 DLL,如果这些文件损坏,注册表配置再完美也无法正常工作。
检查 Hyper-V 服务状态
- 服务名称:
vmms(Hyper-V Virtual Machine Management) - 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmms - 键值名称:
Start - 正常值:
2(自动) - 说明: 如果该值被改为
4(禁用),Hyper-V 将无法启动。
注册表优化的“三不要”原则
- 不要盲目修改 NUMA 设置: 除非你非常了解物理服务器的内存拓扑,否则不要随意修改与 NUMA 相关的注册表项,错误的设置会导致严重的性能倒退。
- 不要禁用核心安全组件(生产环境): 禁用 VBS 或 Credential Guard 虽然能提升兼容性,但会降低系统安全性。在生产环境中,建议通过“核心隔离”设置界面进行配置,而不是直接修改注册表。
- 不要忽略重启: 注册表修改通常涉及内核层驱动(如
StorVSC,Tcpip6),修改后必须重启服务器才能生效,否则可能导致系统不稳定。
🖥️ 主机系统行为与资源管理
1. 优化电源管理与 CPU 性能
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power - 键值名称:
CsEnabled - 类型: DWORD
- 推荐值:
0 - 效果: 禁用“连接待机”(Connected Standby)功能。在服务器或高性能工作站上,这有助于防止系统进入低功耗模式,确保 CPU 随时处于就绪状态,减少虚拟化延迟。
- 注意: 更推荐直接在 BIOS/UEFI 中将电源计划设置为“高性能”,并禁用 C-States 节能选项。
2. 调整内存页面文件策略
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management - 键值名称:
PagingFiles - 操作: 可以将其配置为仅包含系统管理的页面文件,或者指定在高速 SSD 上的特定路径。
- 关联优化: 确保
LargeSystemCache值为0(默认),因为 Hyper-V 需要大量的物理内存用于虚拟机,而不是文件系统缓存。
🗄️ 存储与 VHDX 性能微调
StorVSC,针对具体的 VHDX 文件处理和备份操作,也有相应的注册表配置。1. 优化 VHDX 对齐与碎片整理
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 说明: 这里通常包含虚拟化功能的开关。虽然不常直接修改性能参数,但在排查“无法创建虚拟机”或“VHDX 挂载失败”时,检查此处的权限设置非常重要。
2. 调整磁盘去重与优化策略
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FSRM\Quotas(注意:去重配置通常在DataDeduplication相关路径下,具体取决于 Server 版本) - 操作: 可以通过 PowerShell (
Set-DedupVolume) 更便捷地管理,但在底层注册表中,可以调整ChunkSize等参数来平衡 CPU 占用和存储空间节省率。
🛠️ 虚拟机内部交互与集成服务
1. 禁用或调整时间同步
- 注册表路径 (在虚拟机内部):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider - 键值名称:
Enabled - 类型: DWORD
- 推荐值:
0 - 效果: 禁用 Hyper-V 时间同步提供程序,允许虚拟机使用自己的 NTP 服务器或本地 CMOS 时间。
2. 调整心跳检测频率
- 注册表路径 (在虚拟机内部):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmickvpexchange - 说明: 虽然心跳间隔通常由驱动决定,但在排查“虚拟机显示运行中但无法连接”的问题时,检查此服务是否被禁用或配置错误是必要的步骤。
📊 针对特定应用的优化 (SQL Server / BizTalk)
1. 资源计量与优化
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Measurement - 说明: 这里存储了资源计量的配置数据。通过启用计量,你可以准确知道哪个虚拟机消耗了最多的 CPU 或网络带宽,从而进行针对性的优化(如限制其最大带宽或调整 vCPU 数量)。
2. 优化 SQL Server 的内存分配
- 建议: 在 SQL Server 配置管理器中,将“最大服务器内存”设置为虚拟机总内存的 90% 左右(例如 16GB 内存的 VM,限制 SQL 使用 14GB)。这能确保 Hyper-V 集成服务和宿主机的文件系统缓存有足够的空间。
📌 总结:注册表优化的“黄金法则”
- 备份优先: 修改前导出相关注册表分支。
- 测试环境验证: 所有的性能调优(特别是涉及 CPU 电源管理和存储驱动的)都应在非生产环境中先进行测试。
- 结合 PowerShell: 微软正在逐渐将配置重心从注册表转移到 PowerShell cmdlet(如
Set-VM,Set-VMProcessor)。如果 PowerShell 能提供相同的配置选项,优先使用 PowerShell,因为它的容错率更高且易于脚本化管理。 - 关注“集成服务”版本: 很多性能问题(如网络丢包、磁盘延迟高)实际上是因为虚拟机内的集成服务版本过旧。确保 Windows Update 是开启的,或者手动安装最新的集成服务 ISO。
🛡️ 安全性与性能的权衡:禁用 VBS/HVCI
1. 注册表禁用 VBS
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard - 键值名称:
EnableVirtualizationBasedSecurity - 类型: DWORD
- 优化值:
0 - 效果: 禁用基于虚拟化的安全功能。
- 注意: 修改后通常需要配合
bcdedit /set hypervisorlaunchtype off命令(如果你完全不需要 Hyper-V)或者重启系统才能生效。对于需要保留 Hyper-V 功能的用户,仅修改此值可能不够,还需配合后续提到的启动项调整。
2. 高级启动项配置(彻底关闭 VBS/Credential Guard)
- 操作方式: 使用管理员权限的 CMD 或 PowerShell 执行以下命令序列(这实际上是在修改 BCD 存储,而非直接修改注册表文件,但效果等同于系统级配置):
mountvol X: /s(挂载 EFI 分区)copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Ybcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloaderbcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBSbcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:mountvol X: /d
- 效果: 重启后系统会进入一个特殊的配置界面,按提示(通常是 F3)确认禁用 Credential Guard 和 VBS。这是目前最彻底的释放虚拟化性能的方法。
🐞 虚拟化堆栈调试与日志记录
1. 启用 Hyper-V 详细日志
vmms (虚拟机管理服务) 或 vmwp (虚拟机工作进程) 的问题。- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 操作:
在此路径下,可以创建或修改特定的调试键值。虽然微软通常建议使用wevtutil命令行工具来开启 ETW (Event Tracing for Windows) 日志,但在某些深层调试场景下,注册表中的配置决定了日志的默认行为。 - 相关服务调试:
如果vmms服务无法启动,检查以下路径的权限和配置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmms
确保Start值为2(自动),且ImagePath指向正确的vmms.exe。
⚙️ 主机资源争用管理:防止“饿死”
1. 预留主机资源(通过服务配置)
- 操作思路:
在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,检查与 Hyper-V 相关的服务(如vmms,vds等)。
虽然不建议直接修改PriorityClass,但可以通过 PowerShell 脚本在系统启动时设置 Hyper-V 管理进程的亲和性(Affinity),将其绑定到特定的 CPU 核心,避免与高负载的虚拟机争抢同一核心。
2. 禁用不必要的 Hyper-V 服务
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services - 建议禁用的服务(设为 4 - 禁用):
Hyper-V Guest Service Interface(如果在主机上不需要此服务)RemoteFX Network Virtualization Service(如果不使用旧版 RemoteFX)Windows Remote Management (WS-Management)(如果不需要远程 PowerShell 管理)
📊 网络高级调优:QoS 与 巨型帧
1. 巨型帧 (Jumbo Frames) 注册表调整
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} - 操作:
找到对应的物理网卡子项,查找*JumboPacket键值。
将其设置为9014或9000(取决于网卡驱动支持)。
注意: 必须在物理交换机、物理网卡、Hyper-V 虚拟交换机和虚拟机内部网卡上全部启用巨型帧才能生效,否则会导致严重的丢包。
2. 网络 QoS 权重配置
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 说明: 虽然主要通过
Set-VMNetworkAdapter配置,但底层策略可能受此处控制。对于需要保证关键业务(如 SQL Server)带宽的场景,建议在虚拟交换机属性中启用“带宽管理”,并设置最小/最大带宽。
📌 总结:Hyper-V 优化的“深水区”
- VBS 是性能杀手: 在非生产环境或纯游戏/开发用途中,彻底禁用 VBS 能带来显著的性能提升。
- 日志是排查关键: 遇到疑难杂症,不要盲目修改,先开启详细日志定位是哪个组件(vmms, vmwp, storvsc)出了问题。
- 主机也要“吃饱”: 确保主机操作系统有足够的资源(CPU 亲和性、服务优先级)来管理虚拟机,防止“由于管家累倒了,导致全家瘫痪”的情况。
- 网络全链路优化: 巨型帧和 QoS 需要端到端的配置,单方面的注册表修改可能无效甚至有害。
🔄 Hyper-V 副本(Replication)的高级流控
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication
1. 调整最大并发传输数 (MaximumActiveTransfers)
- 键值名称:
MaximumActiveTransfers - 类型: DWORD
- 默认值:
3 - 优化建议:
- 如果你的网络带宽充足(如 10Gbps+)且拥有大量虚拟机需要同步,可以将此值调大(例如
8或10)。 - 原理: 增加并发数可以填满带宽管道,缩短所有虚拟机的“恢复点目标”(RPO)时间。
- 注意: 设置过高可能会导致网络拥塞,影响正常的业务流量。
- 如果你的网络带宽充足(如 10Gbps+)且拥有大量虚拟机需要同步,可以将此值调大(例如
2. 调整单 VM 的磁盘并行处理数 (ApplyVHDLimit)
- 键值名称:
ApplyVHDLimit - 类型: DWORD
- 默认行为: 若不存在,默认为每个 VM 并行处理 4 个 VHD。
- 优化建议:
- 如果你的存储子系统 IOPS 很高,但 CPU 较弱,可以适当降低此值。
- 如果存储是高性能全闪存阵列,且虚拟机磁盘数量巨大(如 10+ 个),可以适当增加此值以加快日志应用速度。
3. 限制单主机的并发 VM 数 (ApplyVMLimit)
- 键值名称:
ApplyVMLimit - 类型: DWORD
- 默认行为:
0(无限制)。 - 优化建议: 在多对一的复制拓扑中(多个源服务器复制到一个副本服务器),为了防止某一台源服务器“淹没”副本服务器,可以设置此值(例如
10),确保资源公平分配。
🛡️ 强制关闭内存完整性 (HVCI) 以释放性能
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard
1. 禁用 VBS 核心开关
- 键值名称:
EnableVirtualizationBasedSecurity - 类型: DWORD
- 值:
0 - 说明: 这是总开关。将其设为 0 后,系统将在下次启动时尝试不加载虚拟化安全层。
2. 清除 LSA 配置标志
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa - 键值名称:
LsaCfgFlags - 类型: DWORD
- 值:
0 - 操作: 如果该值存在且不为 0,建议将其修改为 0,或者直接删除该键值。
专家提示: 修改上述注册表后,如果发现“设备安全性”页面仍显示“正在运行”,可能需要使用微软官方工具DG_Readiness_Tool或在 CMD 中运行bcdedit /set hypervisorlaunchtype off(如果你完全不需要 Hyper-V)来彻底清除残留。
🖥️ Windows 11 特定优化与兼容性
1. 解决 TPM 冲突与直通
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard - 相关键值:
RequirePlatformSecurityFeatures - 说明: 在某些极端兼容性调试中,如果虚拟机无法通过 TPM 检查,可能需要检查此处的安全特性要求。不过,更推荐的做法是在虚拟机的
.vmcx配置文件或设置中启用“虚拟 TPM 2.0”,而不是试图修改宿主机注册表来释放物理 TPM。
2. 禁用侧信道缓解 (针对开发/测试环境)
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel - 键值名称:
MitigationOptions - 类型: Binary (二进制) 或 DWORD
- 警告: 极度危险。这会降低系统安全性,仅建议在断网的纯性能测试环境中使用。
- 替代方案: 更安全的做法是针对特定进程禁用缓解,或者在虚拟机内部通过 PowerShell (
Set-ProcessMitigation) 进行调整,而不是在宿主机全局关闭。
🛠️ 清理“僵尸”配置
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} - 操作指南:
- 打开注册表编辑器,定位到上述路径。
- 你会看到许多名为
0000,0001,0002的子项。 - 逐个点击,查看右侧的
DriverDesc或NetCfgInstanceId。 - 寻找与 Hyper-V 相关的描述(如 "Hyper-V Virtual Ethernet Adapter"),且对应的是你已经删除的旧虚拟机或旧交换机。
- 删除这些残留的子项。
- 重启服务器以重置网络堆栈。
📌 总结:注册表优化的“最后一公里”
- 副本调优:通过
Replication路径下的键值,你可以像调整水管阀门一样精确控制灾难恢复的带宽和并发量。 - HVCI 彻底关闭:对于开发者和高性能需求用户,修改
DeviceGuard和Lsa下的键值是释放 CPU 虚拟化指令集(VT-x/AMD-V)给第三方软件使用的关键。 - 清理维护:定期清理网络适配器的注册表残留,是保持 Hyper-V 网络栈健康的“卫生”习惯。
vmms)的行为和宿主机的资源分配策略。🛠️ 核心服务与后台进程调优
1. 优化 Hyper-V 虚拟机管理服务 (vmms)
vmms 是 Hyper-V 的“大脑”,负责管理虚拟机的生命周期。在某些高负载场景下,确保该服务拥有足够的资源至关重要。- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmms - 键值名称:
Start - 类型: DWORD
- 推荐值:
2(自动) - 说明: 确保该服务设置为“自动”启动。如果设置为“手动”(3)或“禁用”(4),Hyper-V 将无法正常工作。
- 进阶优化: 虽然不建议直接修改服务的
PriorityClass,但你可以通过任务计划程序或启动脚本,在系统启动后将vmms.exe进程的优先级设置为“高于正常”,以确保管理指令的响应速度。
2. 清理残留的虚拟网络适配器
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} - 操作指南:
- 该路径下包含多个以四位数字命名的子项(如
0000,0001)。 - 逐个点击这些子项,查看右侧的
DriverDesc值。 - 寻找描述为 "Hyper-V Virtual Ethernet Adapter" 或类似名称,但对应的是已删除虚拟机或旧交换机的项。
- 删除这些残留的子项。
- 重启服务器以重置网络堆栈。
- 该路径下包含多个以四位数字命名的子项(如
⚙️ 硬件资源调度与 NUMA 优化
1. 禁用 NUMA 跨越 (针对低内存/单路主机)
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 操作: 虽然通常通过 PowerShell (
Set-VMHost -NumaSpanningEnabled $false) 配置,但底层配置存储在注册表中。 - 效果: 禁用 NUMA 跨越可以强制虚拟机内存分配在同一个 NUMA 节点内,减少跨节点访问内存的延迟。这在内存充足且不需要运行超大虚拟机的环境中能提升性能。
2. 调整 CPU 性能计数器虚拟化
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 相关键值: 查找与
PerfMon或Counter相关的键值。 - 优化建议: 如果你在运行 VMware Workstation 嵌套在 Hyper-V 上时遇到性能问题,尝试在注册表中禁用相关的性能计数器虚拟化功能(如果存在),或者在虚拟机设置中取消勾选“虚拟化 CPU 性能计数器”。
🧩 兼容性与冲突解决
1. 解决与第三方安全软件的冲突
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services - 操作:
检查是否存在与已知冲突软件(如某些旧版本的 Bitdefender, McAfee)相关的服务项。
如果确认冲突,可以将对应服务的Start值修改为4(禁用)。
注意: 务必先确认服务名称,误删系统服务会导致系统崩溃。
2. 修复 WWPN 生成器错误
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMBus - 操作: 检查
VMBus下的设备枚举配置。如果 WWPN 生成器出错,可能需要手动清理相关的设备节点注册表项,或者重置VMBus服务的配置。
📌 总结:注册表优化的“深水区”
- 服务管理:确保
vmms等核心服务配置正确,是 Hyper-V 稳定运行的基础。 - NUMA 调优:根据物理硬件的拓扑结构(单路/多路,内存大小),合理配置 NUMA 策略,可以显著降低内存访问延迟。
- 清理与维护:定期清理注册表中的“僵尸”网络适配器,是保持 Hyper-V 网络栈健康的必要手段。
- 冲突解决:通过注册表禁用冲突服务,是解决“软件打架”问题的终极手段。
vmms)的行为和宿主机的资源分配策略。🛠️ 核心服务与后台进程调优
1. 优化 Hyper-V 虚拟机管理服务 (vmms)
vmms 是 Hyper-V 的“大脑”,负责管理虚拟机的生命周期。在某些高负载场景下,确保该服务拥有足够的资源至关重要。- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmms - 键值名称:
Start - 类型: DWORD
- 推荐值:
2(自动) - 说明: 确保该服务设置为“自动”启动。如果设置为“手动”(3)或“禁用”(4),Hyper-V 将无法正常工作。
- 进阶优化: 虽然不建议直接修改服务的
PriorityClass,但你可以通过任务计划程序或启动脚本,在系统启动后将vmms.exe进程的优先级设置为“高于正常”,以确保管理指令的响应速度。
2. 清理残留的虚拟网络适配器
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} - 操作指南:
- 该路径下包含多个以四位数字命名的子项(如
0000,0001)。 - 逐个点击这些子项,查看右侧的
DriverDesc值。 - 寻找描述为 "Hyper-V Virtual Ethernet Adapter" 或类似名称,但对应的是已删除虚拟机或旧交换机的项。
- 删除这些残留的子项。
- 重启服务器以重置网络堆栈。
- 该路径下包含多个以四位数字命名的子项(如
⚙️ 硬件资源调度与 NUMA 优化
1. 禁用 NUMA 跨越 (针对低内存/单路主机)
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 操作: 虽然通常通过 PowerShell (
Set-VMHost -NumaSpanningEnabled $false) 配置,但底层配置存储在注册表中。 - 效果: 禁用 NUMA 跨越可以强制虚拟机内存分配在同一个 NUMA 节点内,减少跨节点访问内存的延迟。这在内存充足且不需要运行超大虚拟机的环境中能提升性能。
2. 调整 CPU 性能计数器虚拟化
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 相关键值: 查找与
PerfMon或Counter相关的键值。 - 优化建议: 如果你在运行 VMware Workstation 嵌套在 Hyper-V 上时遇到性能问题,尝试在注册表中禁用相关的性能计数器虚拟化功能(如果存在),或者在虚拟机设置中取消勾选“虚拟化 CPU 性能计数器”。
🧩 兼容性与冲突解决
1. 解决与第三方安全软件的冲突
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services - 操作:
检查是否存在与已知冲突软件(如某些旧版本的 Bitdefender, McAfee)相关的服务项。
如果确认冲突,可以将对应服务的Start值修改为4(禁用)。
注意: 务必先确认服务名称,误删系统服务会导致系统崩溃。
2. 修复 WWPN 生成器错误
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMBus - 操作: 检查
VMBus下的设备枚举配置。如果 WWPN 生成器出错,可能需要手动清理相关的设备节点注册表项,或者重置VMBus服务的配置。
📌 总结:注册表优化的“深水区”
- 服务管理:确保
vmms等核心服务配置正确,是 Hyper-V 稳定运行的基础。 - NUMA 调优:根据物理硬件的拓扑结构(单路/多路,内存大小),合理配置 NUMA 策略,可以显著降低内存访问延迟。
- 清理与维护:定期清理注册表中的“僵尸”网络适配器,是保持 Hyper-V 网络栈健康的必要手段。
- 冲突解决:通过注册表禁用冲突服务,是解决“软件打架”问题的终极手段。
vmms)的行为和宿主机的资源分配策略。🛠️ 核心服务与后台进程调优
1. 优化 Hyper-V 虚拟机管理服务 (vmms)
vmms 是 Hyper-V 的“大脑”,负责管理虚拟机的生命周期。在某些高负载场景下,确保该服务拥有足够的资源至关重要。- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmms - 键值名称:
Start - 类型: DWORD
- 推荐值:
2(自动) - 说明: 确保该服务设置为“自动”启动。如果设置为“手动”(3)或“禁用”(4),Hyper-V 将无法正常工作。
- 进阶优化: 虽然不建议直接修改服务的
PriorityClass,但你可以通过任务计划程序或启动脚本,在系统启动后将vmms.exe进程的优先级设置为“高于正常”,以确保管理指令的响应速度。
2. 清理残留的虚拟网络适配器
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} - 操作指南:
- 该路径下包含多个以四位数字命名的子项(如
0000,0001)。 - 逐个点击这些子项,查看右侧的
DriverDesc值。 - 寻找描述为 "Hyper-V Virtual Ethernet Adapter" 或类似名称,但对应的是已删除虚拟机或旧交换机的项。
- 删除这些残留的子项。
- 重启服务器以重置网络堆栈。
- 该路径下包含多个以四位数字命名的子项(如
⚙️ 硬件资源调度与 NUMA 优化
1. 禁用 NUMA 跨越 (针对低内存/单路主机)
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 操作: 虽然通常通过 PowerShell (
Set-VMHost -NumaSpanningEnabled $false) 配置,但底层配置存储在注册表中。 - 效果: 禁用 NUMA 跨越可以强制虚拟机内存分配在同一个 NUMA 节点内,减少跨节点访问内存的延迟。这在内存充足且不需要运行超大虚拟机的环境中能提升性能。
2. 调整 CPU 性能计数器虚拟化
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 相关键值: 查找与
PerfMon或Counter相关的键值。 - 优化建议: 如果你在运行 VMware Workstation 嵌套在 Hyper-V 上时遇到性能问题,尝试在注册表中禁用相关的性能计数器虚拟化功能(如果存在),或者在虚拟机设置中取消勾选“虚拟化 CPU 性能计数器”。
🧩 兼容性与冲突解决
1. 解决与第三方安全软件的冲突
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services - 操作:
检查是否存在与已知冲突软件(如某些旧版本的 Bitdefender, McAfee)相关的服务项。
如果确认冲突,可以将对应服务的Start值修改为4(禁用)。
注意: 务必先确认服务名称,误删系统服务会导致系统崩溃。
2. 修复 WWPN 生成器错误
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMBus - 操作: 检查
VMBus下的设备枚举配置。如果 WWPN 生成器出错,可能需要手动清理相关的设备节点注册表项,或者重置VMBus服务的配置。
📌 总结:注册表优化的“深水区”
- 服务管理:确保
vmms等核心服务配置正确,是 Hyper-V 稳定运行的基础。 - NUMA 调优:根据物理硬件的拓扑结构(单路/多路,内存大小),合理配置 NUMA 策略,可以显著降低内存访问延迟。
- 清理与维护:定期清理注册表中的“僵尸”网络适配器,是保持 Hyper-V 网络栈健康的必要手段。
- 冲突解决:通过注册表禁用冲突服务,是解决“软件打架”问题的终极手段。
vmms)的行为和宿主机的资源分配策略。🛠️ 核心服务与后台进程调优
1. 优化 Hyper-V 虚拟机管理服务 (vmms)
vmms 是 Hyper-V 的“大脑”,负责管理虚拟机的生命周期。在某些高负载场景下,确保该服务拥有足够的资源至关重要。- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmms - 键值名称:
Start - 类型: DWORD
- 推荐值:
2(自动) - 说明: 确保该服务设置为“自动”启动。如果设置为“手动”(3)或“禁用”(4),Hyper-V 将无法正常工作。
- 进阶优化: 虽然不建议直接修改服务的
PriorityClass,但你可以通过任务计划程序或启动脚本,在系统启动后将vmms.exe进程的优先级设置为“高于正常”,以确保管理指令的响应速度。
2. 清理残留的虚拟网络适配器
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} - 操作指南:
- 该路径下包含多个以四位数字命名的子项(如
0000,0001)。 - 逐个点击这些子项,查看右侧的
DriverDesc值。 - 寻找描述为 "Hyper-V Virtual Ethernet Adapter" 或类似名称,但对应的是已删除虚拟机或旧交换机的项。
- 删除这些残留的子项。
- 重启服务器以重置网络堆栈。
- 该路径下包含多个以四位数字命名的子项(如
⚙️ 硬件资源调度与 NUMA 优化
1. 禁用 NUMA 跨越 (针对低内存/单路主机)
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 操作: 虽然通常通过 PowerShell (
Set-VMHost -NumaSpanningEnabled $false) 配置,但底层配置存储在注册表中。 - 效果: 禁用 NUMA 跨越可以强制虚拟机内存分配在同一个 NUMA 节点内,减少跨节点访问内存的延迟。这在内存充足且不需要运行超大虚拟机的环境中能提升性能。
2. 调整 CPU 性能计数器虚拟化
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization - 相关键值: 查找与
PerfMon或Counter相关的键值。 - 优化建议: 如果你在运行 VMware Workstation 嵌套在 Hyper-V 上时遇到性能问题,尝试在注册表中禁用相关的性能计数器虚拟化功能(如果存在),或者在虚拟机设置中取消勾选“虚拟化 CPU 性能计数器”。
🧩 兼容性与冲突解决
1. 解决与第三方安全软件的冲突
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services - 操作:
检查是否存在与已知冲突软件(如某些旧版本的 Bitdefender, McAfee)相关的服务项。
如果确认冲突,可以将对应服务的Start值修改为4(禁用)。
注意: 务必先确认服务名称,误删系统服务会导致系统崩溃。
2. 修复 WWPN 生成器错误
- 注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMBus - 操作: 检查
VMBus下的设备枚举配置。如果 WWPN 生成器出错,可能需要手动清理相关的设备节点注册表项,或者重置VMBus服务的配置。
📌 总结:注册表优化的“深水区”
- 服务管理:确保
vmms等核心服务配置正确,是 Hyper-V 稳定运行的基础。 - NUMA 调优:根据物理硬件的拓扑结构(单路/多路,内存大小),合理配置 NUMA 策略,可以显著降低内存访问延迟。
- 清理与维护:定期清理注册表中的“僵尸”网络适配器,是保持 Hyper-V 网络栈健康的必要手段。
- 冲突解决:通过注册表禁用冲突服务,是解决“软件打架”问题的终极手段。
- 高风险操作:修改注册表和使用 DDA 可能会导致系统不稳定、蓝屏或硬件无法在宿主机上使用,直到你将其恢复。
- 硬件要求:需要支持 IOMMU (Intel VT-d 或 AMD-Vi) 的 CPU 和主板,并在 BIOS/UEFI 中开启该功能。
- 备份:请务必在操作前备份你的系统和注册表。
- 显卡限制:并非所有消费级显卡都完美支持 DDA,可能会遇到错误代码 43 等问题。
🛠️ 第一阶段:环境准备与注册表/策略配置
1. 开启 BIOS 虚拟化支持
- Intel VT-d 或 AMD-Vi / IOMMU
- VT-x 或 AMD-V
2. 配置 Hyper-V 策略(PowerShell)
# 1. 允许增强会话模式(可选,但推荐)
Set-VMHost -EnableEnhancedSessionMode $true
# 2. 检查是否支持 DDA (如果报错则说明硬件或 BIOS 不支持)
# 这一步会列出所有可分配的设备
Get-PnpDevice | Where-Object {$_.Present -eq $true} | Group-Object -Property Class | Select-Object Count, Name
🚀 第二阶段:显卡/设备直通脚本
核心步骤说明
- 查找设备:获取显卡的 PCI 位置路径。
- 卸载设备:强制宿主机释放该硬件。
- 配置虚拟机:设置内存映射(MMIO)以支持硬件直通。
- 挂载设备:将硬件分配给虚拟机。
自动化/半自动化脚本
$VmName 和 $LocationPath 变量。# ================= 配置区域 =================
# 目标虚拟机的名称
$VmName = "Win11-Gaming"
# 设备的 PCI 位置路径 (示例:PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000))
# 你可以在设备管理器 -> 显卡 -> 属性 -> 详细信息 -> 位置路径 中找到
# 注意:必须严格按照格式,例如 PCIROOT(20)#PCI(0300)#PCI(0000)
$LocationPath = "PCIROOT(20)#PCI(0300)#PCI(0000)"
# ===========================================
Write-Host "正在配置 Hyper-V DDA 直通..." -ForegroundColor Cyan
# 1. 检查虚拟机是否存在
$VM = Get-VM -Name $VmName -ErrorAction SilentlyContinue
if (-not $VM) {
Write-Host "错误:找不到名为 '$VmName' 的虚拟机,请先创建虚拟机。" -ForegroundColor Red
exit
}
# 2. 设置虚拟机自动停止动作 (必须为 TurnOff,不支持保存状态)
Write-Host "设置虚拟机关机策略..."
Set-VM -Name $VmName -AutomaticStopAction TurnOff
# 3. 配置内存映射空间 (关键步骤,防止资源不足报错)
# 32位 MMIO 空间,建议 2GB 或 3GB
Set-VM -LowMemoryMappedIoSpace 3Gb -VMName $VmName
# 64位 MMIO 空间,建议 32GB 或更高
Set-VM -HighMemoryMappedIoSpace 32GB -VMName $VmName
# 开启访客控制缓存
Set-VM -GuestControlledCacheTypes $true -VMName $VmName
# 4. 从宿主机卸载设备
Write-Host "正在从宿主机卸载设备 $LocationPath ..." -ForegroundColor Yellow
try {
# -Force 参数强制卸载,即使驱动正在使用
Dismount-VMHostAssignableDevice -LocationPath $LocationPath -Force
Write-Host "设备卸载成功。" -ForegroundColor Green
} catch {
Write-Host "警告:设备卸载可能失败或已卸载。错误信息: $_" -ForegroundColor Yellow
}
# 5. 将设备分配给虚拟机
Write-Host "正在将设备挂载到虚拟机..."
try {
Add-VMAssignableDevice -VMName $VmName -LocationPath $LocationPath
Write-Host "直通配置完成!请启动虚拟机并安装驱动。" -ForegroundColor Green
} catch {
Write-Host "错误:挂载失败。请检查路径是否正确,或设备是否已被占用。错误: $_" -ForegroundColor Red
}
# 6. (可选) 查看已挂载设备
Get-VMAssignableDevice -VMName $VmName
🧩 第三阶段:常见问题修复(注册表与驱动)
1. 清理宿主机驱动残留 (注册表修复)
pcip.sys 加载问题,需要清理注册表中的设备枚举记录。- 以 SYSTEM 权限运行注册表编辑器(使用 PsExec 工具):
- 下载 PsTools,在管理员 CMD 中运行:
psexec -i -d -s c:\windows\regedit.exe
- 下载 PsTools,在管理员 CMD 中运行:
- 定位到以下路径:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\PCIP - 在该目录下查找与你显卡 PCI 地址相关的项,将其删除。
- 重启宿主机。
2. 显卡驱动安装技巧
- 复制驱动文件:
- 在宿主机找到驱动文件夹:
C:\Windows\System32\DriverStore\FileRepository(查找nv_或amduwd_开头的文件夹)。 - 将该文件夹复制到虚拟机内的
C:\Windows\System32\HostDriverStore\FileRepository(如果没有HostDriverStore文件夹需手动创建)。
- 在宿主机找到驱动文件夹:
- 手动指定安装:
- 在虚拟机设备管理器中,右键显卡 -> 更新驱动 -> 浏览我的电脑 -> 选择上面的文件夹进行安装。
🔄 第四阶段:恢复直通(还原设备)
$VmName = "Win11-Gaming"
$LocationPath = "PCIROOT(20)#PCI(0300)#PCI(0000)"
# 1. 确保虚拟机关闭
Stop-VM -Name $VmName -TurnOff -Force
# 2. 从虚拟机移除设备
Remove-VMAssignableDevice -VMName $VmName -LocationPath $LocationPath
# 3. 重新挂载到宿主机
Mount-VMHostAssignableDevice -LocationPath $LocationPath
Write-Host "设备已恢复给宿主机,请重启宿主机以确保驱动正常加载。" -ForegroundColor Green
📊 总结:DDA 配置关键参数表
| 配置项 | PowerShell 命令 | 说明 |
|---|---|---|
| 内存映射 (低) | Set-VM -LowMemoryMappedIoSpace 3Gb |
必须设置,否则显卡无法初始化 |
| 内存映射 (高) | Set-VM -HighMemoryMappedIoSpace 32GB |
为显存预留空间 |
| 缓存控制 | Set-VM -GuestControlledCacheTypes $true |
优化 CPU 缓存一致性 |
| 关机动作 | Set-VM -AutomaticStopAction TurnOff |
DDA 设备不支持保存状态 |
| 卸载设备 | Dismount-VMHostAssignableDevice -Force |
强制宿主机释放硬件 |
| 挂载设备 | Add-VMAssignableDevice |
将硬件绑定到 VM |

浙公网安备 33010602011771号