如何在PowerShell中删除防火墙规则?
美国、香港服务器
如何在PowerShell中删除防火墙规则?
08-06 来源:
一、基础命令
1)查询规则(先确认名称,重中之重)
powershell
# 示例:查找所有阻止规则
Get-NetFirewallRule -Action Block | Select DisplayName, Name, Enabled
2)按【显示名称】删除规则(推荐)
powershell
Remove-NetFirewallRule -DisplayName "填入你的规则显示名称"
示例:
powershell
Remove-NetFirewallRule -DisplayName "拉黑外部攻击IP"
3)强制删除(规避确认弹窗)
加上 -Confirm:$false 直接删除,无交互:
powershell
Remove-NetFirewallRule -DisplayName "拉黑外部攻击IP" -Confirm:$false
二、批量场景实用脚本
场景 1:删除所有启用的阻止规则 ⚠️谨慎使用
powershell
Get-NetFirewallRule -Enabled True -Action Block | Remove-NetFirewallRule -Confirm:$false
场景 2:自动搜索包含指定 IP 的阻止规则并删除(替换 IP)
powershell
$targetIP="111.222.33.44"
Get-NetFirewallRule -Enabled True -Action Block | ForEach-Object {
$addrFilter = $_ | Get-NetFirewallAddressFilter
if ($addrFilter.RemoteAddress -match $targetIP){
Write-Host "正在删除规则:$($_.DisplayName)"
Remove-NetFirewallRule -DisplayName $_.DisplayName -Confirm:$false
}
}
三、重要区分:两种需求不要搞混
❌需求 1:整条规则不要了 → Remove-NetFirewallRule
✅需求 2:只想删掉规则里其中一个 IP,保留规则(不要删除整条规则)
不要直接删规则,使用这条方式:
powershell
$ruleName="你的规则名称"
$removeIp="111.222.33.44"
$filter = Get-NetFirewallRule -DisplayName $ruleName | Get-NetFirewallAddressFilter
$newIpList = $filter.RemoteAddress -split "," | Where-Object {$_ -ne $removeIp}
if($newIpList.Count -gt 0){
Set-NetFirewallRule -DisplayName $ruleName -RemoteAddress $newIpList
}else{
Remove-NetFirewallRule -DisplayName $ruleName -Confirm:$false
}
四、常见错误排查
找不到规则
区分 -DisplayName(界面显示名字)和 -Name(内部英文 ID),不要混用。
权限不足
必须右键 PowerShell → 以管理员身份运行。
删除后依然无法连接
Windows 防火墙 Block 是直接无法建立 TCP 连接;
如果你是 PuTTY Software caused connection abort(连上之后被切断),不是防火墙问题,优先查安全狗:
cmd
safedogctl -b list
safedogctl -b del 你的IP
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快