zoukankan      html  css  js  c++  java
  • 性能计数器取网卡流量

    1.通过性能计数器取网卡流量

    $public_interface = "Broadcom BCM5709C NetXtreme II GigE [NDIS VBD 客户端]"
    
    $counter = New-Object Diagnostics.PerformanceCounter
    $counter.CategoryName = "Network Interface"
    $counter.InstanceName = $public_interface
    #$counter.CategoryName = "Processor Information(_Total)"
    
    #添加计数器属性值,此处监视可用内存
    $counter.CounterName = "Bytes Sent/sec"
    #$counter.CounterName = "Bytes Received/sec"
    
    #$counter.nextsample()  #取样本(RawValue),需要间隔1秒,取两个sample做减法,才能得出每秒流量
    #获取当前计数器的值
    $value = $counter.NextValue()
    Start-Sleep -Seconds 1
    $counter.NextValue()

    2.通过get-counter取网卡流量(PS2.0)

     #$networkcounter = get-counter -counter "Network Interface(Broadcom BCM5709C NetXtreme II GigE [NDIS VBD 客户端])Bytes Sent/sec" #-continuous
     $networkcounter = get-counter -counter "Network Interface($public_interface)Bytes Sent/sec" #-continuous
     ($networkcounter.CounterSamples|Select CookedValue).CookedValue

    同时取网卡发送/接收流量

    #检查机器上配置IP的网卡数量,配置了gateway的网卡为Public,否则为Private
    [array]$netifs = gwmi Win32_NetworkAdapterConfiguration -Filter "IPEnabled='true'"
    If ($netifs.count -eq 1)
        {$public_interface = $netifs[0].Description.replace("(","[").replace(")","]").replace("#","_")}
    If ($netifs.count -eq 2)
        {
         $public_interface = ($netifs | ? {$_.DefaultIPGateway -ne $null}).Description.replace("(","[").replace(")","]").replace("#","_")
         $private_interface = ($netifs | ? {$_.DefaultIPGateway -eq $null}).Description.replace("(","[").replace(")","]").replace("#","_")
        }
    
    #定义函数,通过性能计数器取网卡发送/接收流量
    Function Netif_Sent_Received($interfacename,$send_member,$receiev_member)
    {
    $counter_Sent = New-Object Diagnostics.PerformanceCounter
    $counter_Receive = New-Object Diagnostics.PerformanceCounter
    $counter_Sent.CategoryName = "Network Interface"
    $counter_Receive.CategoryName = "Network Interface"
    $counter_Sent.InstanceName = $interfacename
    $counter_Receive.InstanceName = $interfacename
    $counter_Sent.CounterName = "Bytes Sent/sec"
    $counter_Receive.CounterName = "Bytes Received/sec"
    $value_Sent = $counter_Sent.NextValue()
    $value_Receive = $counter_Receive.NextValue()
    Start-Sleep -Seconds 1
    $Sent = $counter_Sent.NextValue()
    $Receive = $counter_Receive.NextValue()
    $i_object | Add-Member -MemberType NoteProperty -name $send_member -value $sent
    $i_object | Add-Member -MemberType NoteProperty -name $receiev_member -value $receive
    }
    
    
    #将所有结果存放到$i_object对象中
    $i_object = New-Object system.object
    If ($private_interface -ne $null)
        {Netif_Sent_Received $private_interface Private_Send Private_Receive}
    If ($public_interface -ne $null)    
        {Netif_Sent_Received $public_interface Public_Send Public_Receive}
  • 相关阅读:
    【WIN10】我的第一個WIN10-UWP應用——古文觀止
    【WIN10】文本圖標
    【WIN10】VisualStateManager使用說明
    【WIN10】Storyboard動畫板
    【WIN10】Bind、Binding與Converter的使用
    struts执行过程
    在jsp中的局部和全局变量
    jsp页面中的:<%@ page contentType="text/html; charset=utf-8" language="java"%>的作用及含义
    jsp中的this
    在Java接口中怎样访问定义的常量呢?
  • 原文地址:https://www.cnblogs.com/dreamer-fish/p/4710838.html
Copyright © 2011-2022 走看看