windows无法原生限速网卡,但可用powershell+iperf3模拟限速测试:启动可控流量、监控吞吐、自动化采集;辅以qos策略可限制smb等特定协议带宽。
windows 本身不提供直接对单个网络适配器“限速”的原生命令,powershell 也无法原生设置网卡带宽上限(如强制限制为 50 mbps)。但你可以用 powershell 实现带宽限速效果的模拟测试——即通过控制流量生成行为,精准测量在特定速率约束下的网络表现。这在验证 qos 策略、评估限速工具效果或压测带宽整形能力时非常实用。
一、明确测试目标:不是“限速网卡”,而是“限速流量”
真正的带宽限速需由底层驱动、QoS 策略或第三方工具实现。PowerShell 的角色是:
✅ 启动可控速率的流量(如用 iperf3 指定 -b 参数)
✅ 监控实时吞吐(Get-Counter、Get-NetAdapterStatistics)
✅ 自动化触发与结果采集
❌ 不能直接修改网卡硬件速率或系统调度带宽
二、推荐组合方案:PowerShell + iperf3(最可靠)
iperf3 是唯一能在 Windows 下精确设定发送/接收速率并输出结构化数据的专业工具。PowerShell 负责调用、参数组装和结果解析:
- 启动服务端(不限速,仅接收):
Start-Process iperf3 -ArgumentList "-s -p 5201" -WindowStyle Hidden - 客户端限速测试(例如强制 30 Mbps 下载):
iperf3 -c 192.168.1.100 -p 5201 -b 30M -t 20 -J(-J 输出 JSON,便于 PowerShell 解析) - 用 PowerShell 提取实测值:
$result = iperf3 -c ... -J | ConvertFrom-Json; $result.end.sum.bits_per_second / 1MB(单位转为 Mbps)
三、辅助验证:用 PowerShell 实时观测接口级速率
配合限速测试,可同步监控物理网卡是否真实承载了目标流量压力:
- 获取当前活跃网卡名:
$nic = Get-NetAdapter | Where-Object Status -eq 'Up' | Select-Object -First 1 -ExpandProperty Name - 每秒采样一次字节速率:
Get-Counter "\Network Interface($nic)\Bytes Total/sec" -SampleInterval 1 -MaxSamples 10 - 换算为 Mbps:
[math]::Round($_.CookedValue * 8 / 1MB, 2)
注意:该数值反映的是整张网卡总流量,若同时有其他应用通信,需确保测试环境干净。
四、进阶:用 PowerShell 驱动 QoS 策略限速(仅限 SMB/出站)
若目标是限制共享文件夹(SMB)带宽,可结合 Windows 原生 QoS:
- 创建策略,匹配服务器源端口 445:
New-NetQosPolicy "Limit-SMB-Out" -NetworkProfile All -IPSrcPortStart 445 -IPSrcPortEnd 445 -ThrottleRateActionBitsPerSecond 50Mbps - PowerShell 可批量启用/禁用该策略:
Enable-NetQosPolicy "Limit-SMB-Out"或Disable-NetQosPolicy - 测试前后运行 iperf3 或大文件拷贝,对比速率变化即可验证策略生效
不复杂但容易忽略











