Hyper-V虚拟机随宿主机开机自动启动需先确保Hyper-V服务及依赖服务设为自动并运行,再通过图形界面或PowerShell设置AutomaticStartAction为Start并配置延迟,最后验证配置及软链接存在性。

让Hyper-V虚拟机随宿主机开机自动启动,是生产环境中保障业务连续性的基础配置,避免人工干预遗漏导致服务中断。
确认Hyper-V服务已启用并设为自启
打开“服务”管理器(按 Win+R 输入 services.msc),找到 【Hyper-V Virtual Machine Management】 服务。右键→属性→启动类型设为“自动”,点击“启动”按钮立即运行该服务。若此服务未运行,后续所有自启动设置均无效。
同时检查依赖服务 【Windows Management Instrumentation】 和 【Remote Procedure Call (RPC)】 是否也处于“自动”且“正在运行”状态——缺一不可。
在Hyper-V管理器中配置单台虚拟机自启动
方法一:图形界面操作
打开Hyper-V管理器→左侧选中目标虚拟机→右侧点击“设置”→左侧导航栏切换到“管理”→勾选“自动启动此虚拟机”→在“自动启动延迟”中输入秒数(建议 10~30 秒,避免多台VM争抢CPU和磁盘IO)→点击“确定”保存。
方法二:PowerShell一键设置(推荐批量操作)
以管理员身份运行PowerShell,执行以下命令:
Set-VM -Name "WebServer01" -AutomaticStartAction Start -AutomaticStartDelay 15
这行命令将虚拟机 WebServer01 的自启动动作设为“立即启动”,并延后 15 秒执行。注意:-AutomaticStartAction 只能设为 Start、None 或 StartIfRunning,设错会导致开机不启动。
验证自启动配置是否生效
第一步:查看当前配置
在PowerShell中运行:Get-VM -Name "WebServer01" | Select-Object Name, AutomaticStartAction, AutomaticStartDelay
确认输出中 AutomaticStartAction 显示为 Start,且 AutomaticStartDelay 数值与你设置的一致。
第二步:检查 autostart 目录是否存在对应软链接
进入路径:C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines\,查找是否有以虚拟机GUID命名的 .vmcx 文件;再进入:C:\ProgramData\Microsoft\Windows\Hyper-V\Autostart\,确认该目录下存在同名快捷方式文件——这是Hyper-V内部标记自启动的关键依据。
第三步:模拟宿主机重启测试(非生产环境)
执行 Restart-Computer -Force,等待系统重启后,登录即刻打开Hyper-V管理器,观察目标虚拟机状态是否由“已关闭”变为“正在运行”。若仍为关闭态,说明 AutomaticStartAction 被设为 None 或服务未启动。
批量配置多台虚拟机自启动
① 先用以下命令导出当前所有关机状态的虚拟机名称列表:
Get-VM | Where-Object {$_.State -eq 'Off'} | Select-Object Name | Export-Csv -Path "C:\temp\offline_vms.csv" -NoTypeInformation
② 编辑 CSV 文件,删掉不需要自启的虚拟机行,保留纯名称列。
③ 执行批量启用命令:
$vms = Import-Csv "C:\temp\offline_vms.csv"; foreach ($vm in $vms) { Set-VM -Name $vm.Name -AutomaticStartAction Start -AutomaticStartDelay 20 }
这一步会为列表中每一台虚拟机统一设置 20 秒延迟启动。注意:脚本不会校验虚拟机是否存在,若名称拼写错误,会直接报错跳过,不影响其余虚拟机。

















