因为我的主路由从爱快换成了asus 后者没有限时段网络限速的功能 而windows的hyperv里装的虚拟机 速度又不会由宿主机接管进行控制 这就让我非常恼火 而我又有这个需求 那咋办呢?只能通过脚本实现了 遗憾的是上下行都会被限速...所以还是老老实实用爱快等专业路由系统来接管自己的网络吧。。。
开启限速脚本
把下面的脚本另存为 "开启限速脚本.ps1"
用PoweShell运行就完事了
Hyperv同命名的啥情况我不知道哈 我有不重要的挂机虚拟机全部叫win10 所以你要用脚本限速 最好给他取一个唯一的名字
以下脚本为限速30MB的参数 你可以自行改哈
# 设置虚拟机名称和带宽限制
$VMName = "你Hyperv的虚拟机名字"
$MaxBandwidth = 30MB
# 应用带宽限制
Get-VMNetworkAdapter -VMName $VMName | Set-VMNetworkAdapter -MaximumBandwidth $MaxBandwidth
关闭限速脚本
把下面的脚本另存为 "关闭限速脚本.ps1"
用PoweShell运行就完事了
# 设置虚拟机名称(根据需求修改)
$VMName = "你Hyperv的虚拟机名字" # 替换为你的虚拟机名称
# 解除带宽限制(将最大带宽设置为 0 即取消限制)
Get-VMNetworkAdapter -VMName $VMName | Set-VMNetworkAdapter -MaximumBandwidth 0
按时段限速
下面的方法手动运行 到点都无法执行脚本 原因是需要指定用powershell进行执行
需要改动的就是在触发器
失败的方法
下面大部分可以继续参考 但是最终效果是无法正确执行 修改点就是上面我提到的
方法也很简单 用windows自带的“任务计划程序” 直接搜索就有
打开之后创建一个 基本任务 按照提示选择脚本就行了
比如说我要0点-17点进行限速
就让开启限速脚本在0点执行就行了
然后再在17点执行一次关闭脚本就行了
是不是非常简单?
注意事项
添加计划任务前自己保存之后测试一下开关是否正常
具体成功没有你可以打开hyperv的虚拟机设置 查看是否开启了带宽管理
开关脚本都要测试一下 我winserver2025环境 没啥问题 其他版本系统我不清楚 自行测试
正确的方法
假设你的脚本路径为 C:\Users\Administrator\Desktop\脚本\开启限速.ps1
,你可以按照以下步骤来设置任务计划程序来执行这个 PowerShell 脚本:
1. 在任务计划程序中创建任务
任务 1: 每天 0 点开启限速
- 打开 任务计划程序。
- 在右侧点击 创建基本任务。
- 给任务命名(比如 "开启限速"),然后点击 下一步。
- 设置 触发器 为 每天,并选择 开始时间 为 0 点,然后点击 下一步。
- 在 操作 选择 启动程序,点击 下一步。
- 在 程序/脚本 输入框中填写
powershell.exe
,这是你启动 PowerShell 脚本的命令。 在 添加参数(可选) 输入框中填写以下内容:
-NoProfile -ExecutionPolicy Bypass -File "C:\Users\Administrator\Desktop\脚本\开启限速.ps1"
这行命令的意思是:
-NoProfile
:不加载用户配置文件。-ExecutionPolicy Bypass
:跳过执行策略,确保脚本可以运行。-File
:指定要运行的 PowerShell 脚本路径。
所以完整的参数应该是:
-NoProfile -ExecutionPolicy Bypass -File "C:\Users\Administrator\Desktop\脚本\开启限速.ps1"
- 点击 下一步,确保任务设置为 以最高权限运行(在任务属性中勾选 以最高权限运行)。
- 完成任务设置。
任务 2: 每天 17 点关闭限速
你可以使用相同的方法创建一个新任务来在 17 点关闭限速。唯一的不同是,在 参数 里要指向关闭限速的 PowerShell 脚本,路径类似:
-File "C:\Users\Administrator\Desktop\脚本\关闭限速.ps1"
2. 确认设置
确保任务以管理员权限运行:任务属性中勾选 以最高权限运行。
3. 测试
完成上述设置后,你可以尝试手动运行任务计划程序中的任务来确认它是否能够正常执行。如果手动运行正常,定时任务应该也能按时执行。
总结:
- 在任务计划程序的操作部分中,使用
powershell.exe
来运行 PowerShell 脚本。 - 通过
-NoProfile -ExecutionPolicy Bypass -File "脚本路径"
来启动脚本。 - 你可以创建两个任务,一个用于 0 点开启限速,另一个用于 17 点关闭限速。