You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell获取网卡上传速率的兆比特值?

解决PowerShell网卡发送字节转兆比特的问题

首先明确:你用的转换公式是对的——1 Mbps = 125000 字节/秒(因为1Mbps=1000000比特/秒 ÷8比特/字节=125000字节/秒)。问题大概率出在计数器路径的转义错误,或是未处理无效数据导致除法报错,以下是具体解决步骤:

1. 修正计数器路径并验证原始数据

原命令里的是输入转义错误,正确的计数器路径应该用\分隔,先执行以下命令确认能获取有效数据:

# 获取所有网卡的发送字节/秒数据,包含网卡名称
$counterResults = Get-Counter 'Netzwerkadapter(*)\Bytes gesendet/s' | Select-Object -ExpandProperty CounterSamples
# 查看原始数据,排查是否有无效值(比如$null或非数值)
$counterResults | Select-Object InstanceName, CookedValue

2. 过滤无效数据并转换为Mbps

部分虚拟网卡、未启用的网卡可能返回空值或非数值,直接除法会报错,先过滤再计算:

# 计算每个有效网卡的发送Mbps,保留两位小数
$sendMbps = $counterResults | Where-Object { $_.CookedValue -is [double] } | ForEach-Object {
    [PSCustomObject]@{
        网卡名称 = $_.InstanceName
        每秒发送Mbps = [math]::Round($_.CookedValue / 125000, 2)
    }
}
# 输出格式化后的结果
$sendMbps

3. 单个网卡的简化命令

如果只需要特定网卡(比如名为"Ethernet"的网卡),直接指定实例名可避免数组处理问题:

# 获取指定网卡的发送Mbps并格式化
$targetAdapterMbps = (Get-Counter 'Netzwerkadapter(Ethernet)\Bytes gesendet/s').CounterSamples.CookedValue / 125000
[math]::Round($targetAdapterMbps, 2)

常见错误排查点

  • 计数器路径错误:用Get-Counter -ListSet Netzwerkadapter查看德语系统下网卡计数器的正确名称,确认拼写无误
  • 无效数值:通过Where-Object过滤掉非double类型的CookedValue即可解决除法报错
  • 版本兼容:确保使用PowerShell 5.1及以上版本,旧版本数组操作语法可能存在差异

内容的提问来源于stack exchange,提问作者Sofa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:55:19