对PowerShell来说很新,所以在这里。
所以最终目标是:每隔十秒,检查一下IIS进程是否超过某个CPU使用率。如果它持续超过一定水平超过一分钟,重置它。
我理解Get-Counter" \ Process(w3wp)\%Processor Time"会给我一些我需要的号码。
我如何每10秒检查一次?我认为我可以管理以前的检查比较的逻辑。
谢谢!
答案 0 :(得分:1)
你可以有这样的脚本:
While (1){
#Checking Code
Get-Counter "\Process(w3wp)\% Processor Time"
#Sleep for 10 seconds
Sleep 10
}
或者"更好"选项是让每分钟左右运行一次计划任务。
答案 1 :(得分:1)
我会给出答案。我也会使用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
}
然后安排它每分钟运行一次,或每5分钟运行一次,或者其他什么。如果它运行并且某些东西超过你的目标使用它将继续运行直到它达到一分钟,然后它会做你需要重置的任何东西,并将$ countdown设置回0.我在重置后放置睡眠,所以如果用法拍摄正确,它将继续运行并在一分钟后重置。