可通过PowerShell结合NetAdapterStatistics模块每2–5秒采集网卡广播/单播/组播包增量,计算滚动广播占比(保留4位小数),过滤虚拟适配器,控制台伪实时刷新并红标超15%网卡,支持CSV日志与阈值告警。
可以通过 powershell 结合 wmi 或 netadapter/netstatistics 模块持续采集每秒广播帧数与总接收帧数,再计算滚动比例并可视化趋势。关键在于避免轮询过密导致性能干扰,同时区分物理网卡与虚拟适配器。
获取网卡基础信息与实时计数器
使用 Get-NetAdapterStatistics 获取各网卡的接收帧总数(RxUnicastPackets、RxBroadcastPackets、RxMulticastPackets),该命令轻量且无需管理员权限(部分字段需提权)。注意:Windows Server 2012 R2+ 支持,旧系统建议用 Get-WmiObject -Class Win32_PerfFormattedData_Tcpip_NetworkInterface 替代。
- 过滤掉状态为
NotConnected或名称含Virtual、vEthernet的适配器,减少干扰 - 用
Select-Object Name, RxBroadcastPackets, RxUnicastPackets, RxMulticastPackets提取关键字段 - 首次采集后缓存初始值,后续用差值计算单位时间增量
按秒采样并计算广播包占比(滚动窗口)
每 2–5 秒执行一次采集,记录时间戳、各网卡广播包增量与总接收包增量(广播 + 单播 + 组播),再算出广播占比。不直接用累计值,否则长期运行后小变化会被淹没。
- 用
Start-Sleep -Seconds 3控制间隔,避免高频调用影响系统 - 广播比例 =
[double]$deltaBroadcast / ($deltaUnicast + $deltaBroadcast + $deltaMulticast),结果保留 4 位小数 - 当分母为 0(无流量)时跳过本次计算,防止除零错误
- 可维护一个长度为 10 的数组,只保留最近 10 次比例值,用于判断突增趋势
输出与轻量监控(控制台+日志)
默认在控制台以表格形式刷新显示,支持导出 CSV 供 Excel 分析;也可写入本地日志文件,带时间戳和网卡标识。
- 使用
Write-Host配合Clear-Host实现“伪实时刷新”,每轮清屏重绘 - 对广播比 > 15% 的网卡标红(
Write-Host -ForegroundColor Red),提示潜在风暴风险 - 日志格式示例:
2024-06-12T14:23:01,eth0,18.72%,便于 grep 或 LogParser 分析 - 加参数
-LogPath "C:\logs\bcast-mon.csv"启用追加写入
可选增强:触发告警与简单绘图
若需进一步响应,可在脚本中加入阈值判断逻辑;配合 Out-GridView 或导出为 HTML 表格,实现简易趋势查看。
- 连续 3 次广播比 > 20%,则弹出提示框(
[System.Windows.Forms.MessageBox]::Show(...))或发邮件 - 用
ConvertTo-Html -Fragment生成含<tr style="color:red"> 的高亮行,保存为 HTML 查看 <li>不依赖外部工具,纯 PowerShell 实现,适合无 GUI 的 Core 版本服务器</li> </tr>


















