Performance 使用powershell分析处理器

Performance 使用powershell分析处理器,performance,powershell,monitoring,processor,Performance,Powershell,Monitoring,Processor,嗨,我正在编写一个脚本,在一段时间内采集处理器的样本,现在我只用5秒钟就可以快速运行它进行测试。。。我对powershell不太熟悉,但在这个网站和其他网站之间找到了一些东西来实现这一点,它在我的Windows 7机器上运行,但在Windows 2008 R2上不起作用。一旦我得到平均值,我将把它放在if语句中,以便在处理器陷入困境时发送警报。我将感谢您对此事的帮助,并提前表示感谢 $a=Get-counter -Counter "\Processor(_Total)\% Processor T

嗨,我正在编写一个脚本,在一段时间内采集处理器的样本,现在我只用5秒钟就可以快速运行它进行测试。。。我对powershell不太熟悉,但在这个网站和其他网站之间找到了一些东西来实现这一点,它在我的Windows 7机器上运行,但在Windows 2008 R2上不起作用。一旦我得到平均值,我将把它放在if语句中,以便在处理器陷入困境时发送警报。我将感谢您对此事的帮助,并提前表示感谢

$a=Get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 5

($a.CounterSamples.CookedValue | Measure-Object -Average).average
这应该适用于V2。

$a=获取计数器-计数器“\Processor(\u Total)\%Processor Time”-采样间隔2-最大采样15 if($a.CounterSamples.CookedValue |测量对象-平均值)。平均值-gt 90)

{

执行某种类型的警报脚本

}


然后,您所要做的就是使用任务调度器在特定的时间间隔内执行……

您的问题是什么?至于为什么它可以在一台机器上工作,而不能在另一台机器上工作,请参见我的说明。我的理解是,您的代码可以在七台机器上工作,但不能在W2K8R2上工作。根据@mike z comment,您在每台macine上使用的PowerShell版本是什么?是的,我完全忘记了不同的版本,我假设它们都是相同的,下面答案中的代码确实有效,这正是我想要的,但很高兴了解两个系统之间的不同版本,谢谢你的帮助…我忘记了不同的版本,是的,这段代码确实有效,非常感谢你…对于其他任何采用这种方法的人来说,只是想添加到这一点上,处理器可以返回0值,当除法起作用时,会得到一些奇怪的结果,由于某种原因,我在除法时收到了两个值,有时会得到一个关于0除法的错误,所以在除法前汇总数组并检查值是否大于0,所以不是因为0,我增加了样本数,但当我把它们全部加在一起而不是一个数字时,我得到了一个由3个数字组成的数组,如:$b=Get counter-counter“\Processor(\u Total)\%Processor Time”-SampleInterval 2-MaxSamples 60 | select-expandProperty countersamples | select-expandProperty cookedvalue | Out String$a=($b[0]+$b[1]+$b[2]+$b[3]+$b[4]+$b[5]+$b[6]+$b[7]+$b[8]+$b[9]+$b[10]+$b[11]+$b[12]+$b[13]+$b[14]+$b[15]+$b[16]+$b[17]+$b[18]+$b[19]+$b[20]+$b[21]+$b[22]+$b[23]+$b[24]+$b[25]+$b[26]+$b[27]+$b[28]+$b[29]3.125 0.8780475426722 1.7543有什么想法吗?括号后的3个数字是我放在换行符中的变量返回的结果,没有出现…放弃并修复了升级的powershell问题,应该立即执行,而不是尝试修复错误lol
$b = Get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 5|select -expandProperty countersamples|select -ExpandProperty cookedvalue|Out-String

$($b[0]+$b[1]+$b[2]+$b[3]+$b[4])/5