使用PowerShell New-NetQosPolicy创建QoS策略后无法生效且组策略编辑器读取出错的问题求助
PowerShell New-NetQosPolicy创建QoS策略后无法生效且组策略编辑器读取出错的问题求助
大家好,我最近在做一个自动生成QoS策略的工具,目标是用PowerShell的New-NetQosPolicy命令给特定应用(比如Firefox)限制带宽,我是通过C++脚本调用这个命令来执行的,但遇到了两个棘手的问题,希望各位能帮忙分析下:
我的操作细节
我用的PowerShell命令是:
New-NetQosPolicy -Name firefox.exe -AppPathNameMatchCondition "firefox.exe" -ThrottleRateActionBitsPerSecond 5MB -IPProtocolMatchCondition Both -NetworkProfile All
对应的C++执行代码片段如下:
//create QoS policy std::string command = "powershell New-NetQosPolicy -Name " + appName + " -AppPathNameMatchCondition \"" + appName + "\" -ThrottleRateActionBitsPerSecond " + std::to_string(bandwidthLimit) + "MB -IPProtocolMatchCondition Both -NetworkProfile All"; std::cout << command << std::endl; system(command.c_str()); qosNames.push_back(appName); std::cout << "Bandwidth limit applied for " << appName << ": " << bandwidthLimit << " Kbps" << std::endl;
当前现象
运行完命令后,我用Get-NetQosPolicy命令查看,能看到这个策略,配置看起来完全没问题:
Name: firefox.exe
Owner : Group Policy(Machine)
NetworkProfile : All
Precedence : 127
AppPathName : firefox.exe
JobObject :
IPProtocol: Both
ThrottleRate : 5.243 MBits / sec
但问题来了:
- 这个QoS策略根本没生效,Firefox的带宽完全没被限制;
- 我打开组策略编辑器查看时,点击策略标签会弹出错误提示:"Errors while reading policies from this GPO, not all policies are displayed."
补充一下:如果我手动在系统里配置QoS策略,是能正常生效的,完全没问题。
我的需求
希望有人能帮忙解决这个问题,或者告诉我怎么用注册表编辑的方式创建这类QoS策略,也非常想知道为什么会出现这种情况。另外测试时的事件日志自定义视图我已经附上了,里面包含了用上述命令创建QoS的完整过程。
备注:内容来源于stack exchange,提问作者Powplowdevs




