【发布时间】:2015-04-18 01:09:43
【问题描述】:
'晚上,
我是 PowerShell 脚本(以及本网站)的新手,需要编写一个脚本:
- 多次收集性能计数器(在本例中为 TCP)
- 计算每个计数器的 rawvalue 属性的连续值之间的差异
规定脚本每间隔T迭代性能计数器N次,表示性能计数器为“A”和“B”,我们从0开始计数,需要进行如下计算:
A[1st] - A[0th],
A[2nd] - A[1st],
A[3rd] - A[2nd]
...
目前,脚本只遍历计数器两次(即本例中的 N = 2)。目标是能够“多次”(例如几百次)遍历这些计数器。
当前脚本将每个计数器的原始值读入单个数组。这里是:
$cntr = (get-counter -listset tcpv4).paths
$arry = @()
for ($i=0; $i -lt 2; $i++) {
write-host "`nThis is iteration $i`n"
foreach ($elmt in $cntr) {
$z = (get-counter -counter $elmt).countersamples[0].rawvalue
$arry = $arry + $z
write-host "$elmt is: $z`n"
}
}
当我运行这个脚本时,我得到如下输出:
This is iteration 0
\TCPv4\Segments/sec is: 24723
\TCPv4\Connections Established is: 27
\TCPv4\Connections Active is: 796
\TCPv4\Connections Passive is: 47
\TCPv4\Connection Failures is: 158
\TCPv4\Connections Reset is: 412
\TCPv4\Segments Received/sec is: 14902
\TCPv4\Segments Sent/sec is: 9822
\TCPv4\Segments Retransmitted/sec is: 199
This is iteration 1
\TCPv4\Segments/sec is: 24727
\TCPv4\Connections Established is: 27
\TCPv4\Connections Active is: 798
\TCPv4\Connections Passive is: 47
\TCPv4\Connection Failures is: 159
\TCPv4\Connections Reset is: 412
\TCPv4\Segments Received/sec is: 14903
\TCPv4\Segments Sent/sec is: 9824
\TCPv4\Segments Retransmitted/sec is: 200
例如“\TCPv4\Segments Retransmitted/sec”计数器的 rawvalue 属性的两个值分别是 $arry[8] 和 $arry[17]。为了得出我正在使用的两者之间的区别:
write-host "The difference between the successive counters for $($cntr[-1]) is $($($arry[17]) - $($arry[8]))."
任何帮助将不胜感激。
【问题讨论】:
-
您希望这些数据如何显示?那么对于每个值,您想知道前一个的区别吗?基本上使你的输出翻倍/
-
@Matt,感谢您的回复。如何显示数据待定。是的,目前我只想知道每个计数器的当前值和前一个值之间的差异。
-
希望我超出了您的预期。