netstat -ant | ?({$_ -like "*:80*"}) |%{$_.Trim() -replace "\s{2,}"," " }|%{$_.split(' ')[2]}|%{$_.split(':')[0]}|Group-Object $_ | sort Count -Descending | Where-Object({$_.Count -ge 50}) |Select-Object Count,Name > C:\Users\Administrator\Desktop\cports\ip.txt
####以上内容另存为一个'自动发现.PS1'文件
####以下内容另存为一个'自动禁止.PS1'文件
$ip=(get-content C:\Users\Administrator\Desktop\cports\ip.txt -totalcount 4)[-1]|%{$_.trim()}|%{$_.split()[-1]}
if ("$?" -eq "False")
{
echo "数据错误"
exit
}
if ((get-content C:\Users\Administrator\Desktop\cports\ip.txt -totalcount 4)[-1]|%{$_.trim()}|%{$_.split()[-1]}|%{$_.startswith("192")})
{
echo "不能操作私网IP"
exit
}
#$ip=Read-Host "请输入要禁止的IP"
$RULE_NAME=$ip
netsh advfirewall firewall show rule name=$RULE_NAME
if ("$?" -eq "True")
{
echo "对不起,规则 $RULE_NAME 已经存在"
}
else
{
echo "规则 $RULE_NAME 创建中..."
netsh advfirewall firewall add rule name=$RULE_NAME dir=in protocol=tcp action=block remoteip=$ip
}
exit
####检测频率可以调整计划任务的循环时间,单IP的并发数限制可以在第一行的‘Where-Object({$_.Count -ge 50}’ 50可以自己调整
####第一次运行可能失败,是因为系统默认不允许执行powershell脚本,请输入解锁命令‘set-ExecutionPolicy RemoteSigned’即可。