遇到问题
我现在使用Hyper-v配置了一台Linux虚拟机, 虚拟机通过frp技术把端口暴漏在外网,虚拟机和frp服务器使用的是ipv6协议。 但是我使用的宽带服务ipv6的地址每天凌晨都会变一次, 而Hyper-v的虚拟机在宿主机关机的时候会保留上次的ipv6地址和路由信息,这就导致第二天Hyper-v跟随宿主机启动时保留的ipv6路由失效。 每次都要重新登录到虚拟机做一次
reboot
,重新配置ipv6。 特意检查了下Hyper-v的设置选项,没有宿主机关机正常关闭虚拟机的选项。
组策略配置开关机脚本
编写脚本关闭虚拟机
首先需要编写一个 PowerShell 脚本,在关机时关闭 Hyper-V 里的所有虚拟机。
1
2
# shutdown_vms.ps1
Get-VM | Where-Object { $_.State -eq 'Running' } | Stop-VM -Force
这个脚本会遍历所有正在运行的虚拟机,并强制将它们关闭。
使用组策略运行脚本
然后,使用组策略(Group Policy)来配置在关机时自动运行这个脚本:
-
打开组策略编辑器: 按
Win + R
,输入gpedit.msc
,然后回车。 -
导航到关机脚本设置: 在组策略编辑器中,导航到:
计算机配置 -> Windows 设置 -> 脚本 (启动/关机)
-
添加关机脚本:
- 在右侧,双击“关机”。
- 点击“添加”,然后选择你之前保存的 shutdown_vms.ps1 脚本。
- 确认设置后保存。
测试
确保脚本的权限和组策略的生效,尝试重新启动或关机,检查虚拟机是否在系统关机时被自动关闭。
通过这种方式,你可以确保在关机时自动关闭 Hyper-V 虚拟机。
开机启动虚拟机脚本
1
2
3
# start_vms.ps1
Start-VM -Name "VM1"
Start-VM -Name "VM2"