我有一个脚本来检查顶部w3wp进程是使用多少内存。然后根据它使用的演出距离有多近,它会发出一条消息。如果/ ELSEIF不工作的权利
param($warn, $crit)
$LastExitCode = 3
$Output1 = ""
$output = ""
$myW3WP = Get-Process w3wp | Sort -Descending WS | select -first 1 |
Measure-Object WS -Sum
$myW3WP = ("{0:N2} " -f ($myW3WP.sum/1mb))
$myW3WP.trim()
if ($myW3WP -gt $crit) {
$LastExitCode = 2
$output1 = "CRITICAL: Memory for W3WP has passed 1 gig $myW3WP"
$output = $output1
} elseif ($myW3WP -gt $warn) {
$LastExitCode = 1
$output1 = "WARN: Memory for W3WP is getting close to 1 gig $myW3WP"
$output = $output1
} else {
$LastExitCode = 0
}
$output = $output1
Write-Host $output $LastExitCode "$myW3WP >= " $crit ($myW3WP -gt $crit) "$myW3WP >= " $warn ($myW3WP -gt $warn)
$myW3WP = ""
在值$crit
是1000和$warn
值是900。 (注:Write-Host
线就像是用于故障排除)
这是我得到的输出:
关键:W3WP的记忆已经通过1演出161.03 2 161.03> = 1000 True 161.03> = 900 False
161.03是正在使用的RAM的大小。
为什么跟它161.03任何想法是大于1000?
因为你从数值改变'$ myW3WP'值与'-f'运营商的字符串。现在,由于'$ myW3WP'是一个字符串,执行字符串比较和*字母*'161'大于'1000' –