#powershell 监控, 重启网卡
一台Windows服务器,由于负荷较大,偶尔会网络中断,就写了个powershell脚本,监控ip是否通,不通就重启网卡
cls $host.UI.RawUI.WindowTitle = ‘……VM监控……’ $host.UI.RawUI.ForegroundColor='Green' #version V1.3.9 #t1间隔时间s $t1=5 $log='C:Router.log.txt' #region $nu=0 $n1="##########" $n2="监控总次数" $cq1=0 $cq2=0 $ip1='192.168.0.1' $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 "重启网卡:$($cq1)" echo "重启路由:$($cq2)" echo $n1 #write echo $n1 >$log echo $n2 >>$log echo $nu >>$log echo $log1[3..($log1.count-1)] >>$log #check if ((Get-WmiObject -query "SELECT * FROM Win32_PingStatus WHERE Address = '$ip1'").StatusCode -eq 0) { "The router is online!" #检测内网 if ((Get-WmiObject -query "SELECT * FROM Win32_PingStatus WHERE Address = '$ip2'").StatusCode -eq 0) { "The Lan is online!" } elseif ((Get-WmiObject -query "SELECT * FROM Win32_PingStatus WHERE Address = '$ip3'").StatusCode -eq 0) { "The Lan is online!" } else { "重启内网网卡" $cq1=$cq1 + 1 echo "重启内网网卡, $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss.ffff')">>$log Get-NetAdapter -Name '本地连接' | Restart-NetAdapter Get-NetAdapter -Name 'Lan' | Restart-NetAdapter sleep 30 } } else { "The router is offline!" "重启路由网卡" $cq1=$cq1 + 1 echo "重启路由网卡, $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss.ffff')">>$log Get-NetAdapter -Name 'Wan2' | Restart-NetAdapter Get-NetAdapter -Name 'Lan2' | Restart-NetAdapter sleep 30 #再次检测 if ((Get-WmiObject -query "SELECT * FROM Win32_PingStatus WHERE Address = '$ip1'").StatusCode -eq 0) { "The route is online!" } else { "重启 router" $cq2=$cq2 + 1 echo "重启 router, $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss.ffff')">>$log $vname='ikuai-router' Restart-VM $vname -Force sleep 100 } } }