$Last_n_Hours = [DateTime]::Now.AddHours(-5) $log = "C:\blocked_ip_rdp.txt" $badRDPlogons = Get-EventLog -LogName 'Security' -after $Last_n_Hours -InstanceId 4625 | ?{$_.Message -match 'Тип входа:\s+(3)\s'} | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} } $getip = $badRDPlogons | group-object -property IpAddress | where {$_.Count -gt 5} | Select -property Name $current_ips = (Get-NetFirewallRule -DisplayName "BlockRDPBruteForce" | Get-NetFirewallAddressFilter ).RemoteAddress -split(",") foreach ($ip in $getip) { if ($ip.name -and $ip.name -ne "-" -and !($current_ips -contains $ip.Name)) { $current_ips += $ip.name (Get-Date).ToString() + ' ' + $ip.name + ' IP заблокирован за ' + ($badRDPlogons | where {$_.IpAddress -eq $ip.name}).count + ' попыток за 5 часов'>> $log # запись события блокировки IP адреса в лог файл } } Set-NetFirewallRule -DisplayName "BlockRDPBruteForce" -RemoteAddress $current_ips