关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

windwos2012R2_2016_2019_IIS PowerShell进程池守护

发布时间:2019-10-11 14:47:31

由于IIS某些原因为自动停止,我用PowerShell简单开发了这个小程序,用户可以设置多长时间检查一次,一经发现网站停止,则自动启动IIS进程。结合WindowsPowerShell 运行起来还算完美

cls
    iis: #先进到powershell IIS
    $host.UI.RawUI.WindowTitle = ‘……翼通IIS守护……’
    $host.UI.RawUI.ForegroundColor='Green'
    #version V1.3.9
    #t1间隔时间s
    $t1=60
    $log='d:\iis.log.txt' #日志文件
    #region
    $nu=0
    $n1="##########"
    $n2="监控总次数"
    $cq1=0
    $cq2=0
    #$ip2='172.16.11.145'
    #$ip3='172.16.11.8'
    #endregion    if(Test-Path $log){}else
    {
    "初始化log"
    echo $n1 >$log
    echo $n2 >>$log
    echo $nu >>$log
    echo $n1 >>$log    }
    while(1 -lt 2)
    {
    sleep $t1 #休眠都多少秒
    cls
    $log1=Get-Content $log
    $nu=$log1[2]
    $nu=[int]$nu + 1
    #print  显示到电脑屏幕
    echo $n1  
    echo "$($n2):$($nu)次"
    echo "监控间隔:$($t1)s(秒)"
    echo "重启已停止IIS进程:$($cq1)次"


    echo $n1
    #write
    echo $n1 >$log
    echo $n2 >>$log
    echo $nu >>$log
    echo $log1[3..($log1.count-1)] >>$log
     
        #check

	#Get-ChildItem IIS:\apppools  这样进去会报找不到启动器错
        Get-ChildItem apppools | where {$_.state -eq "Stopped"} |  ForEach-Object{
           echo "正在重启已停止的进程"$($_.Name)
           $cq1=$cq1 + 1
           echo "重启已停止进程$($_.Name), $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss.ffff')">>$log
           Start-WebAppPool -Name "$($_.Name)" #启动已经停止的进程           
        }
        sleep 60 #重启完休息60秒    }

监控效果

23.png

监控日志

##########
监控总次数67373097
重启已停止进程1_FreeHost_358, 2018-06-04 00:25:33.9097重启已停止进程1_FreeHost_442, 2018-06-04 01:28:11.1607重启已停止进程1_FreeHost_442, 2018-06-04 03:54:56.7327重启已停止进程1_FreeHost_353, 2018-06-04 06:36:08.7288重启已停止进程1_FreeHost_445, 2018-06-04 12:00:08.7867重启已停止进程1_FreeHost_101, 2018-06-04 12:22:56.2607重启已停止进程1_FreeHost_127, 2018-06-04 12:22:56.5317



/template/Home/Zkeys/PC/Static