如何在PowerShell中解除被阻止的IP地址?
美国、香港服务器
如何在PowerShell中解除被阻止的IP地址?
08-05 来源:
方式 1:仅移除规则里单个拉黑 IP(推荐,不删除整条规则)
步骤 1:先定位规则
powershell
$targetIP="你的公网IP"
$rule = Get-NetFirewallRule -Enabled True -Action Block | ForEach-Object {
$filt = $_ | Get-NetFirewallAddressFilter
if($filt.RemoteAddress -match $targetIP){
$_
}
}
#输出匹配的规则名称
$rule.DisplayName
步骤 2:读取现有 IP 列表,剔除目标 IP
powershell
#填入上面查到的规则名称
$ruleName = "在这里填入规则显示名称"
$delIp = "需要解除的IP地址"
#获取现有远程IP集合
$filter = Get-NetFirewallRule -DisplayName $ruleName | Get-NetFirewallAddressFilter
$ipList = $filter.RemoteAddress -split "," | Where-Object { $_ -ne $delIp }
#更新规则,移除该IP
if($ipList.Count -gt 0){
Set-NetFirewallRule -DisplayName $ruleName -RemoteAddress $ipList
}else{
#列表为空,直接删除这条规则
Remove-NetFirewallRule -DisplayName $ruleName
}
方式 2:直接禁用整条阻止规则(快速测试)
找到规则名称后执行:
powershell
#禁用(保留规则,随时可以重新启用)
Disable-NetFirewallRule -DisplayName "规则显示名称"
#启用恢复
#Enable-NetFirewallRule -DisplayName "规则显示名称"
方式 3:直接删除整条阻止规则(永久清除)
powershell
Remove-NetFirewallRule -DisplayName "规则显示名称"
一键脚本:自动查找 IP 并移除(复制直接运行)
修改 $targetIP 为你要放行的 IP
powershell
$targetIP = "111.222.33.44" #替换成你的IP
Get-NetFirewallRule -Enabled True -Action Block | ForEach-Object {
$rule = $_
$addrFilter = $rule | Get-NetFirewallAddressFilter
if ($addrFilter.RemoteAddress -ne "Any" -and $addrFilter.RemoteAddress -match $targetIP) {
Write-Host "发现拦截规则:$($rule.DisplayName)"
$ipArr = $addrFilter.RemoteAddress -split "," | Where-Object { $_ -ne $targetIP }
if ($ipArr.Count -gt 0) {
Set-NetFirewallRule -DisplayName $rule.DisplayName -RemoteAddress $ipArr
Write-Host "✅已从规则移除IP $targetIP"
}else{
Remove-NetFirewallRule -DisplayName $rule.DisplayName
Write-Host "✅规则内无剩余IP,直接删除整条规则"
}
}
}
验证是否生效
本地电脑执行连通测试
powershell
Test-NetConnection 服务器IP -Port 22
重要区分故障现象
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快