遇到问题

我现在使用Hyper-v配置了一台Linux虚拟机, 虚拟机通过frp技术把端口暴漏在外网,虚拟机和frp服务器使用的是ipv6协议。 但是我使用的宽带服务ipv6的地址每天凌晨都会变一次, 而Hyper-v的虚拟机在宿主机关机的时候会保留上次的ipv6地址和路由信息,这就导致第二天Hyper-v跟随宿主机启动时保留的ipv6路由失效。 每次都要重新登录到虚拟机做一次
reboot,重新配置ipv6。 特意检查了下Hyper-v的设置选项,没有宿主机关机正常关闭虚拟机的选项。

组策略配置开关机脚本

编写脚本关闭虚拟机

首先需要编写一个 PowerShell 脚本,在关机时关闭 Hyper-V 里的所有虚拟机。

# shutdown_vms.ps1
Get-VM | Where-Object { $_.State -eq 'Running' } | Stop-VM -Force

这个脚本会遍历所有正在运行的虚拟机,并强制将它们关闭。

使用组策略运行脚本

然后,使用组策略(Group Policy)来配置在关机时自动运行这个脚本:

  • 打开组策略编辑器:
    Win + R,输入gpedit.msc,然后回车。

  • 导航到关机脚本设置:
    在组策略编辑器中,导航到:
    计算机配置 -> Windows 设置 -> 脚本 (启动/关机)

  • 添加关机脚本:

  1. 在右侧,双击“关机”。
  2. 点击“添加”,然后选择你之前保存的 shutdown_vms.ps1 脚本。
  3. 确认设置后保存。

测试

确保脚本的权限和组策略的生效,尝试重新启动或关机,检查虚拟机是否在系统关机时被自动关闭。

通过这种方式,你可以确保在关机时自动关闭 Hyper-V 虚拟机。

开机启动虚拟机脚本

# start_vms.ps1
Start-VM -Name "VM1"
Start-VM -Name "VM2"