随时间推移轮询Powershell中的进程CPU

随时间推移轮询Powershell中的进程CPU,powershell,iis,Powershell,Iis,powershell非常新,所以它在这里 因此,最终目标是:每十秒钟检查一个IIS进程是否超过某个CPU使用量。如果它持续高于某一水平超过一分钟,则重置它 我知道Get Counter“\Process(w3wp)\%Processor Time”将提供我需要的数字 我如何每10秒检查一次?与以前的检查进行比较的逻辑我认为我可以管理 谢谢 您可以有这样一个脚本: While (1){ #Checking Code Get-Counter "\Process(w3wp)\% Processor

powershell非常新,所以它在这里

因此,最终目标是:每十秒钟检查一个IIS进程是否超过某个CPU使用量。如果它持续高于某一水平超过一分钟,则重置它

我知道Get Counter“\Process(w3wp)\%Processor Time”将提供我需要的数字

我如何每10秒检查一次?与以前的检查进行比较的逻辑我认为我可以管理


谢谢

您可以有这样一个脚本:

While (1){

#Checking Code
Get-Counter "\Process(w3wp)\% Processor Time"

#Sleep for 10 seconds
Sleep 10

}

或者“更好”的选择是安排每分钟左右运行一次的任务。

我将提供一个答案。我也将使用While循环,但格式有点不同

$Countdown = 0
While((Get-Counter "\Process(w3wp)\% Processor Time"|sort -Descending |Select -First 1) -gt <target CPU usage>){
    $Countdown+=10
    if($countdown -gt 60){
        Reset IIS
        $Countdown = 0
    }
    start-sleep 10
}
$Countdown=0
While((获取计数器“\Process(w3wp)\%Processor Time”|排序-降序|选择-第一个1)-gt){
$倒计时+=10
如果($倒计时-gt 60){
重置IIS
$Countdown=0
}
开始睡眠10分钟
}

然后将其计划为每分钟运行一次,或每5分钟运行一次,或其他任何形式。如果它运行并且超出了您的目标使用量,它将继续运行,直到达到一分钟,然后它会执行您需要重置的任何操作,并将$countdown设置回0。我在重置后设置了睡眠,因此如果使用情况恢复正常,它将继续运行,并在一分钟后再次重置。

我很好奇,排序下降在这里有什么好处吗?我,呃,你只有一个进程吗?抱歉,我假设会有多个响应,只是想得到最高的响应。如果该Get计数器只有1个响应,则可以跳过排序并选择管道。