【发布时间】:2018-04-23 18:11:18
【问题描述】:
在 Windows 10 上,在任务管理器/性能中,它为网络适配器提供了“接收”和“发送”的值。我很好奇 MS 是如何做到这一点的,所以我想到了 powershell 中的性能计数器。所以我拼凑了一些代码来进行实验,把它放在后台作业中,这样:
$Computer = hostname;
$sndrecsum = {((get-counter -Counter '\network adapter(*)\Bytes Received/sec' -MaxSamples 30).CounterSamples | measure cookedvalue –Sum).Sum};
$sptstb = New-Object System.Net.WebClient;
$sptstb.DownloadFile('http://client.akamai.com/install/test-objects/10MB.bin', 'Out-Null');
Start-Job -Name sxrxs -scriptblock $sndrecsum -ArgumentList $Computer;
Get-Job -Name sxrxs | Wait-Job; $sndrecsumout = Get-Job -Name sxrxs | Receive-Job; ($sndrecsumout | measure -Maximum).Maximum
这就是问题所在。输出 '($sndrecsumout | measure -Maximum).Maximum' 应该得到数组 $sndrecsumout 中的最大值。它确实这样做了,但数组中的最大值总是比它应该的低,并且永远不会与任务管理器/性能中显示的“接收”和“发送”匹配(转换为任务管理器/性能中显示的主要单位后)同时)。所以我不确定任务管理器/性能是否正在使用性能计数器,或者我是否在某个地方搞砸了。
无论如何,有两个问题:首先,任务管理器/性能如何获取“接收”和“发送”的值? - 和 - 二,我是否搞砸了我正在尝试这样做的方式?
提前感谢您的回复和建议。
【问题讨论】:
标签: powershell