PowerShell 不显示 Collisions 是因现代全双工网卡无物理冲突,驱动不采集该值;Get-NetAdapterStatistics 等均无此字段,应改用 ReceiveErrors、SendErrors、CRC Errors 等真实指标监控。
powershell 本身不直接提供“冲突包(collisions)”的实时计数接口,因为现代全双工以太网设备(包括 windows 服务器标配网卡)在正常工作模式下不会发生物理层冲突,该计数器通常恒为 0 或不可用。冲突统计仅存在于传统半双工共享式以太网(如早期集线器环境),而 windows server 自 2003 起默认使用全双工、交换式网络,网卡驱动和 ndis 层已不再上报或维护该值。
为什么 Get-NetAdapterStatistics 不显示 Collisions
运行 Get-NetAdapterStatistics 可查看接收/发送字节数、单播包、错误包等,但输出中没有 CollisionCount 字段。这是因为:
- Windows 网络栈不采集、不暴露物理层冲突指标(底层驱动未实现或返回 0)
- WMI 类 MSFT_NetAdapterStatisticsSettingData 同样不含 Collision 相关属性
- 性能计数器(PerfMon)中“Network Interface”对象也无 “Collisions/sec” 计数器
可替代监控的关键指标(更反映真实问题)
若你实际想定位网络异常(如丢包、拥塞、硬件故障),应关注以下 PowerShell 可获取的、有实际意义的指标:
- Receive Errors / Send Errors:通过 Get-NetAdapterStatistics | Select Name, ReceivedDiscards, ReceivedErrors, SentErrors
- Alignment Errors / CRC Errors:部分高级网卡驱动支持,需查厂商 WMI 或专用工具(如 Intel PROSet、Broadcom BACS)
- Interface Speed & Duplex Mode:确认是否误协商为半双工(罕见但可能),用 Get-NetAdapter | Select Name, LinkSpeed, MediaType, PhysicalMediaType
- Driver-reported Hardware Errors:查询 Get-WinEvent -LogName "System" -ID 27,41 -FilterXPath "*[System[(Level=2 or Level=1) and (EventID=27 or EventID=41)]]" -MaxEvents 10(看网卡驱动报错)
如确需底层寄存器级冲突值(极特殊场景)
仅适用于某些支持低级诊断的网卡(如部分 Intel 10G+ 或 Mellanox),且需:
- 安装厂商提供的 PowerShell 模块(如 IntelNVM 或 MlnxTools)
- 调用其专用 cmdlet(如 Get-NetAdapterAdvancedProperty -DisplayName "*Duplex*" 查协商结果,若显示 “Full” 则冲突计数无意义。


















