可通过powershell组合get-vmnetworkadapter与get-counter命令获取虚拟交换机统计信息:先用get-vmnetworkadapter定位网卡及portid,再以portid代入get-counter查询\hyper-v virtual network adapter(*)\下实时性能计数器。
可以通过 powershell 的 get-vmnetworkadapter 和 get-counter 命令组合查询虚拟交换机相关统计信息,重点是获取虚拟网卡的实时性能计数器数据。
使用 Get-VMNetworkAdapter 查看基础连接与状态
该命令可列出所有虚拟机网卡及其绑定的虚拟交换机、端口 ID、MAC 地址和连接状态,是定位目标网卡的第一步。
- 运行 Get-VMNetworkAdapter -All 查看全部虚拟网卡(含已关机 VM)
- 用 Get-VMNetworkAdapter -VMName "Win10-Test" 精确筛选某台虚拟机的网卡
- 输出中的 SwitchName 字段即为所属虚拟交换机名称,PortId 是关键标识符,后续性能采集需依赖它
通过 Get-Counter 获取实时性能计数器
Windows Hyper-V 将虚拟交换机流量统计暴露为性能计数器,路径格式为:\Hyper-V Virtual Network Adapter(*)\*。括号内需填入 PortId 或网卡名称(推荐用 PortId 避免重名冲突)。
- 先执行 (Get-VMNetworkAdapter -VMName "Win10-Test").PortId 获取 PortId(如:{a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8})
- 再运行:
Get-Counter "\Hyper-V Virtual Network Adapter({a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8})\Bytes Received/sec" - 常用计数器包括:Bytes Received/sec、Bytes Sent/sec、Packets Received/sec、Packets Sent/sec、Errors Received/sec
批量导出或持续监控建议
单次查询适合快速验证,生产环境建议脚本化采集。
- 用 Get-Counter @(...) | Export-Counter -Path "netstats.blg"(二进制日志),再用 Import-Counter 解析
- 注意:计数器名称区分大小写,且需管理员权限运行 PowerShell
注意事项与常见问题
部分统计可能为空或返回 0,通常由以下原因导致:
- 虚拟机未开机或网卡已断开连接(检查 Connected 和 State 字段)
- 计数器路径拼写错误,特别是 PortId 中的花括号和连字符不能遗漏
- 宿主机未启用“性能计数器”功能(一般默认开启,但精简版系统可能关闭)
- 想查物理网卡或外部交换机端口统计?PowerShell 无法直接获取,需改用 Get-NetAdapterStatistics 或底层 WMI 类











