Performance 使用Powershell的进程的网络使用

Performance 使用Powershell的进程的网络使用,performance,powershell,powershell-2.0,Performance,Powershell,Powershell 2.0,我想计算特定进程发送和接收的字节数。我想使用powershell。 我可以使用资源监视器->网络活动来做一些事情。 如何使用get-counter实现这一点?这里有一篇关于使用get-countercmdlet的非常好的脚本编写人员文章: 诀窍是找到您需要的计数器,我认为您无法获得所需的粒度,因为这些计数器与PerfMon使用的计数器相同。它更关注整个网络接口,而不是使用接口的单个进程。话虽如此,如果它是唯一使用给定接口的东西,那么它应该能很好地完成这个任务 首先查看可用的网络接口选项: (g

我想计算特定进程发送和接收的字节数。我想使用powershell。 我可以使用资源监视器->网络活动来做一些事情。
如何使用get-counter实现这一点?

这里有一篇关于使用
get-counter
cmdlet的非常好的脚本编写人员文章:

诀窍是找到您需要的计数器,我认为您无法获得所需的粒度,因为这些计数器与PerfMon使用的计数器相同。它更关注整个网络接口,而不是使用接口的单个进程。话虽如此,如果它是唯一使用给定接口的东西,那么它应该能很好地完成这个任务

首先查看可用的网络接口选项:

(get-counter -list "Network Interface").paths

看来你不能。我完全找不到性能监视器正在读取的计数器,尽管其他人可能会插话。也许还有别的办法,但这是你们特别要求的

查看计数器,您将发现最接近的是进程对象上的“IO读取字节/秒”和“IO写入字节/秒”计数器

问题在于,它们不仅仅是网络活动。perfmon中的描述是:

“此计数器对进程生成的所有I/O活动进行计数 包括文件、网络和设备I/O。“

也就是说,如果您知道您只想监视或主要想监视的进程写入网络连接,那么这可能比根本不测量任何内容要好

您可以这样做(我将以Chrome为例,因为它现在可以方便地运行和使用数据):

这只会给你一次阅读。如果您想继续阅读,可以添加连续开关

返回的PerformanceCounterSampleSet对象不太适合使用,但您可以在$obj.countersamples.cookedvalue中找到实际读数

列表将相当长(如果你像我一样浏览)。Chrome在许多独立的进程中运行,因此我们将进行一些计算,将它们全部相加,并以KB表示

最终结果:

get-counter "\Process(chrome*)\IO Read Bytes/sec" -Continuous | foreach {
    [math]::round((($_.countersamples.cookedvalue | measure -sum).sum / 1KB), 2)
    }

运行此命令将持续输出Chrome正在使用的KB/s的读数。

尝试查看
Get Counter
cmdlet这似乎不适用于Nagios客户端C:\Program Files\NSClient++\nscp.exe。Process Explorer显示网络I/O接收的字节,但perfmon中的所有I/O计数器仍为0…该链接是链接损坏的受害者。以下是最近的链接。
get-counter "\Process(chrome*)\IO Read Bytes/sec" -Continuous | foreach {
    [math]::round((($_.countersamples.cookedvalue | measure -sum).sum / 1KB), 2)
    }