Get Network Utilization

 性能管理是系统运维管理的一个重要内容,而如何获取各种系统资源的利用率向来是一件很麻烦的事情。幸运的是,在powershell中微软提供了大量的cmdlet,借助这些cmdlet,我们可以轻松的根据自己的需要定制出资源利用分析工具出来。
下面就是一个监控网卡使用率的脚本,脚本并不复杂,构造一个获取性能的函数,然后将性能与额定值进行计算即可。
 
$counters = @()
foreach ($inst in (new-object System.Diagnostics.PerformanceCounterCategory("network interface")).GetInstanceNames()){
        $cur = New-Object system.Diagnostics.PerformanceCounter('Network Interface','Bytes Total/sec',   $inst)
        $max = New-Object system.Diagnostics.PerformanceCounter('Network Interface','Current Bandwidth', $inst)
 
        $cur.NextValue() | Out-Null
        $max.NextValue() | Out-Null
 
        $counters += @{"Throughput"=$cur;"Bandwidth"=$max;"Name"=$inst}
}
 
sleep 2
 
foreach($counter in $counters) {
 
        $curnum = $counter.Throughput.NextValue()
        $maxnum = $counter.Bandwidth.NextValue()
 
        New-Object PSObject -Property @{"Util"=$((( $curnum * 8 ) / $maxnum ) * 100);"Name"=$counter.Name}
}
运行结果如下:
当然,你也可以将性能监视的数据源更改为cpu、内存、或者硬盘等你需要监控的数据源,并对代码进行相应的修改,就可以实现自定义的监控分析了。