我试图提供一个简短的脚本来通知我CPU使用率超过一定限度,但它只有在CPU〈100%时才起作用,但如果100%CPU工作则失败
$trashhold=90
$doit=Get-WmiObject Win32_Processor | Measure-Object -Property LoadPercentage -Average | Select Average | Out-String
if ($doit -match "\d+"){
$doit = $matches[0];
}
if ($doit -gt $trashhold)
{
send email bla bla
}
else
{
Write-Output "less than $limit, do nothing"
}
基本上,regex从Get-WmiObject函数中获取数值,如果cpu为99或更小,则脚本可以工作。对于100,即使它比垃圾桶(90)大,它也可以工作。错误在哪里?
尝试捕获错误,但没有结果(regex返回正确的数字)
1条答案
按热度按时间5vf7fwbs1#
不需要
Out-String
,也不需要regex,您只是将其过于复杂:您要做的是从
LoadPercentage
属性中获取属性值,这可以通过member-access enumeration(如答案所示)或使用Select-Object -ExpandProperty LoadPercentage
来完成。ForEach-Object LoadPercentage
也可以工作(有关详细信息,请参阅-MemberName
参数)。还有其他方法,但这些是最常用的方法。