【发布时间】:2013-09-03 00:29:16
【问题描述】:
早上。
如果超过每天 10 次登录失败的阈值,我有一个脚本会在特定时间阻止 IP。
它适用于每台服务器,但只有一个。 (总有一个!) 该服务器特别是 Server 2008(在其他 08 上运行良好)
它会抛出以下错误:
您必须在“-”的右侧提供一个值表达式 操作员。在 C:\Users\admin\Desktop\Block.ps1:11 char:34 + $arRemote = $ar.RemoteAddresses -s
这是原始代码。
$DT = [DateTime]::Now.AddHours(-24)
$l = Get-EventLog -LogName 'Security' -InstanceId 4625 -After $DT | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} }
$g = $l | group-object -property IpAddress | where {$_.Count -gt 10} | Select -property Name
$fw = New-Object -ComObject hnetcfg.fwpolicy2
$ar = $fw.rules | where {$_.name -eq 'Blacklist'}
$arRemote = $ar.RemoteAddresses -split(',')
$w = $g | where {$_.Name.Length -gt 1 -and !($arRemote -contains $_.Name + '/255.255.255.255') }
$w| %{
if ($ar.RemoteAddresses -eq '*') {
$ar.remoteaddresses = $_.Name
}else{
$ar.remoteaddresses += ',' + $_.Name
}
}
if ($w.length -gt 1) {
$w| %{(Get-Date).ToString() + ' ' + $_.Name >> 'C:\blocked.txt'}
}
clear-eventlog "Security"
老实说,我不明白为什么它会在 1 台服务器上显示此错误,但在其他服务器上运行良好。
【问题讨论】:
标签: powershell