You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows平台下如何通过命令行工具或API获取指定时间段内各进程的网络流量数据?

Windows平台下如何通过命令行工具或API获取指定时间段内各进程的网络流量数据?

你现在的需求是在自动化基准测试中,精准统计指定时间段内每个进程的网络收发字节数,对吧?结合你已经考虑过的工具,我给你几个更贴合自动化场景的方案:

1. 利用Windows原生性能计数器(Performance Counters)

这是最省事的原生方案,不需要额外安装工具,支持命令行调用和API集成:

  • 命令行可以用typeperf工具,在基准测试前后分别采样进程的网络流量计数器,计算差值:
    # 记录初始值
    typeperf "\Process(*)\TCP Bytes Sent" "\Process(*)\TCP Bytes Received" -sc 1 -o baseline.csv
    # 运行你的基准测试...
    # 记录结束值
    typeperf "\Process(*)\TCP Bytes Sent" "\Process(*)\TCP Bytes Received" -sc 1 -o final.csv
    
    之后用PowerShell脚本读取两个CSV文件,按进程名称匹配,计算每个进程的收发字节差值即可。
  • 如果要集成到你的代码里,可以用Performance Data Helper (PDH) API,直接查询这些计数器,能更灵活地控制采样时机和数据处理。

2. Sysinternals Procmon的命令行模式

你之前觉得Procmon是GUI不好自动化,但其实它支持完全命令行操作,还能过滤仅网络事件:

  • 启动网络相关事件捕获:
    procmon /n /backingfile benchmark_net.pml /filter "Operation Is Send OR Operation Is Receive"
    
  • 运行完基准测试后,停止捕获:
    procmon /terminate
    
  • 把捕获的数据导出为CSV方便统计:
    procmon /open benchmark_net.pml /saveas benchmark_net.csv /format csv
    
  • 最后用PowerShell或Python脚本解析CSV,按进程名称/PID分组统计总收发字节数。

3. Windows事件跟踪(ETW)+ Logman/Tracerpt

这是高效的底层原生方案,性能开销低,适合高精度统计:

  • 启动TCPIP相关的ETW跟踪:
    logman start net_trace -p Microsoft-Windows-TCPIP -o net_trace.etl -ets
    
  • 运行基准测试后停止跟踪:
    logman stop net_trace -ets
    
  • 把ETL日志解析为CSV格式:
    tracerpt net_trace.etl -o net_trace.csv -of csv
    
  • 解析后的CSV里会包含进程ID、网络操作类型和字节数,你可以用脚本轻松统计每个进程的总流量。

4. 轻量第三方工具:NirSoft CurrPorts

这个工具体积小,命令行支持导出进程的累计网络流量:

  • 基准前后分别导出数据:
    cports.exe /scomma before.csv
    # 运行你的基准测试...
    cports.exe /scomma after.csv
    
  • 对比两个CSV文件,计算每个进程的流量差值即可。

另外补充下你之前考虑的工具的优化点:

  • 资源监控器的采样逻辑其实和性能计数器同源,用typeperf就能实现命令行版的定时采样统计;
  • 网络监视器/Wireshark的包捕获确实低效,上面的方案都是基于系统统计数据而非原始包,性能开销小很多,更适合自动化基准测试场景。

备注:内容来源于stack exchange,提问作者davidair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:08:19