Windows 10下如何按小时绘制指定服务或进程的上传下载历史图表?
Windows 10下如何按小时绘制指定服务或进程的上传下载历史图表?
嘿,我来给你分享几个实用的方法,帮你在Windows 10上按小时统计并绘制指定服务/进程的上传下载历史:
方法一:PowerShell脚本采集+Excel绘图
这个方法靠系统自带的PowerShell就能搞定,灵活性很高,步骤如下:
- 编写监控脚本:
新建一个文本文件,把下面的代码粘贴进去,替换$processName为你要监控的进程名(比如DoSvc对应的是dosvc.exe),保存为MonitorNetworkUsage.ps1:$processName = "dosvc.exe" # 替换成目标进程名 $logPath = "C:\ProcessNetworkLog.csv" # 日志保存路径,可自行修改 $intervalHours = 1 # 每小时采集一次数据 # 初始化CSV表头(如果日志文件不存在) if (-not (Test-Path $logPath)) { "时间,发送字节数(每秒),接收字节数(每秒)" | Out-File $logPath -Encoding UTF8 } while ($true) { $currentTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss" try { # 从系统性能计数器获取网络数据 $sentBytes = (Get-Counter -Counter "\Process($processName)\Network Bytes Sent/sec").CounterSamples.CookedValue $receivedBytes = (Get-Counter -Counter "\Process($processName)\Network Bytes Received/sec").CounterSamples.CookedValue # 写入日志文件 "$currentTime,$sentBytes,$receivedBytes" | Out-File $logPath -Append -Encoding UTF8 } catch { Write-Host "采集数据失败: $_" "$currentTime,采集失败,采集失败" | Out-File $logPath -Append -Encoding UTF8 } # 等待1小时后再次采集 Start-Sleep -Seconds ($intervalHours * 3600) } - 运行脚本:
右键以管理员身份打开PowerShell,切换到脚本所在的文件夹,执行命令. .\MonitorNetworkUsage.ps1启动监控。 - 生成图表:
采集足够数据后,打开保存的CSV文件,用Excel插入折线图,把“时间”设为横轴,“发送/接收字节数”设为纵轴,就能得到按小时的历史趋势图了。
方法二:系统自带性能监视器(Performance Monitor)
这是Windows原生的监控工具,操作更可视化:
- 按下
Win+R,输入perfmon打开性能监视器。 - 在左侧导航栏找到数据收集器集 → 用户定义,右键选择「新建」→「数据收集器集」。
- 给集命名,选择「创建手动(高级)」,点击下一步。
- 勾选「性能计数器」,点击下一步。
- 点击「添加」,在弹出的窗口中展开
Process类别,找到Network Bytes Sent/sec和Network Bytes Received/sec,然后在右侧选中你要监控的进程(比如dosvc),点击添加后确定。 - 设置采样间隔为3600秒(也就是1小时),点击下一步。
- 选择数据保存的路径,点击完成。
- 右键启动这个数据收集器集,运行一段时间后,右键选择「最新报告」,就能查看统计数据,还可以直接在报告里生成图表,或者导出数据到Excel做进一步处理。
方法三:第三方工具(比如Process Hacker)
如果觉得手动操作麻烦,可以用免费开源的Process Hacker:
- 安装Process Hacker后打开,找到你要监控的进程/服务,右键选择「属性」。
- 切换到「性能」标签,这里能看到实时的网络收发数据,点击「日志」按钮,设置好日志保存路径和采样间隔(比如每小时)。
- 采集完成后,导出日志数据,用绘图工具就能生成历史图表了。
备注:内容来源于stack exchange,提问作者Franck Dernoncourt




