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

如何通过Hyper-V的Measure-VM命令正确获取虚拟机的入站/出站网络流量值

如何通过Hyper-V的Measure-VM命令正确获取虚拟机的入站/出站网络流量值

我明白你遇到的问题了——用Measure-VM Android能在输出表格里看到NetworkInbound和NetworkOutbound的数值,但直接通过.NetworkInbound或.NetworkOutbound属性访问却拿不到值,这确实有点反直觉。

其实原因很简单:Measure-VM返回的对象里,网络流量数据并不是直接作为顶级属性存在的,而是嵌套在NetworkMeteringReport这个属性里(它是一个数组,对应虚拟机的每一块网卡)。

下面是具体的解决步骤:

1. 先获取完整的虚拟机测量对象

$vmStats = Measure-VM Android

2. 提取单网卡的流量数据

如果你的虚拟机只有一块网卡,直接访问数组的第一个元素即可,记得把单位从KB转换成MB(和Measure-VM表格输出的单位保持一致):

# 获取入站流量(MB)
$inboundMB = $vmStats.NetworkMeteringReport[0].InboundKilobytes / 1024
# 获取出站流量(MB)
$outboundMB = $vmStats.NetworkMeteringReport[0].OutboundKilobytes / 1024

# 输出结果
Write-Host "入站流量: $inboundMB MB"
Write-Host "出站流量: $outboundMB MB"

3. 处理多网卡的情况

如果虚拟机有多块网卡,可以遍历NetworkMeteringReport数组,分别获取每块网卡的流量:

foreach ($nicReport in $vmStats.NetworkMeteringReport) {
    $nicName = $nicReport.NetworkAdapterName
    $inbound = [math]::Round($nicReport.InboundKilobytes / 1024, 2)  # 保留两位小数
    $outbound = [math]::Round($nicReport.OutboundKilobytes / 1024, 2)
    
    Write-Host "网卡 [$nicName] 入站流量: $inbound MB"
    Write-Host "网卡 [$nicName] 出站流量: $outbound MB`n"
}

额外注意:确保开启了资源计量功能

如果运行以上命令后NetworkMeteringReport是空的,说明你的虚拟机还没开启网络资源计量,先执行下面的命令开启:

Enable-VMResourceMetering -VMName Android

开启后再运行Measure-VM就能正常获取流量数据了。

备注:内容来源于stack exchange,提问作者user167420

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 15:18:13