PowerShell 是 Windows 内置的网络流量监测工具,支持获取网卡总流量、实时速率、高流量进程定位及日志记录:1. 用 Get-NetAdapterStatistics 查累计收发字节数;2. 用 Get-Counter 监控每秒速率;3. 用 Get-NetTCPConnection 关联进程;4. 用循环导出 CSV 日志。PowerShell 是 Windows 系统中无需安装额外软件、可直接用于网络接口流量监测的可靠工具。它能实时获取收发字节数、计算速率、关联进程,还能生成日志供分析,适合日常运维与故障排查。
查看网卡总流量累计值
用 get-netadapterstatistics 可快速获取各网卡自启动以来的总收发字节数,适合做粗略统计或趋势对比:
- 运行
Get-NetAdapterStatistics,输出含 ReceivedBytes 和 SentBytes 字段 - 数值单位为字节,除以 1024² 得 MB,再除以 1024 得 GB
- 若某网卡显示 0 或无数据,说明该适配器未启用或驱动异常,可用
Get-NetAdapter确认状态是否为 Up
实时监控每秒收发速率
要观察当前带宽占用情况,推荐使用性能计数器方式,精度高且开销低:
- 先查网卡名:
Get-NetAdapter | Where-Object Status -eq 'Up' | Select-Object Name - 再采样速率(例如对 Ethernet):
Get-Counter "\Network Interface\Ethernet\Bytes Received/sec", "\Network Interface\Ethernet\Bytes Sent/sec" -SampleInterval 1 -MaxSamples 5 - 结果单位是字节/秒;÷1024 ≈ KB/s,÷1024÷1024 ≈ MB/s
- 如需持续刷新效果,可用 while 循环 + Clear-Host 实现类 watch 功能
定位高流量进程
光看网卡总量不够,必须知道“谁在传”。PowerShell 可结合连接与进程信息交叉分析:
在 Windows 11 上"直接发声"的 TTS(从 WSL2/TUI 调用 powershell.exe + System.Speech)。适用于用户说"说出来/读出来/语音播报/用TTS",或反馈"没声音/tts 生成的 mp3 是空的/播不出来",以及需要中文语音但 OpenClaw 内置 tts 不可用时。
- 执行:
Get-NetTCPConnection | Where-Object State -eq 'Established' | Select-Object LocalAddress, RemoteAddress, @{Name='Process';Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName}}, OwningProcess | Sort-Object Process - 重点关注 svchost.exe(可能承载 Windows Update、BITS)、msedge.exe(后台更新)、Teams.exe(会议上传)等
- 若返回空或报错,可能是权限不足或进程已退出,建议以管理员身份运行
记录流量日志用于回溯分析
把实时数据保存为 CSV 文件,便于后续比对或绘图:
- 设定日志路径:
$logPath = "$env:USERPROFILE\Desktop\network_log.csv" - 每 5 秒记录一次:
1..120 | ForEach-Object { $now = Get-Date; $nic = Get-NetAdapter | ? Status -eq 'Up' | select -First 1 -Expand Name; $stat = Get-NetAdapterStatistics -Name $nic; [PSCustomObject]@{Time=$now; ReceivedMB=[math]::Round($stat.ReceivedBytes/1MB,2); SentMB=[math]::Round($stat.SentBytes/1MB,2)} | Export-Csv $logPath -Append -NoTypeInformation; Start-Sleep -Seconds 5 } - 日志含时间戳和 MB 单位数值,可用 Excel 或 Python 直接打开分析










