如何在PowerShell中修改防火墙规则?
美国、香港服务器
如何在PowerShell中修改防火墙规则?
08-06 来源:
一、基础通用语法
powershell
Set-NetFirewallRule -DisplayName "你的规则显示名称" [参数]
二、高频修改场景(直接复制使用)
1. 启用 / 禁用规则
powershell
# 启用
Set-NetFirewallRule -DisplayName "拉黑IP规则" -Enabled True
# 禁用
Set-NetFirewallRule -DisplayName "拉黑IP规则" -Enabled False
2. 修改动作:允许 ↔ 阻止
powershell
# 改为允许
Set-NetFirewallRule -DisplayName "规则名" -Action Allow
# 改为阻止
Set-NetFirewallRule -DisplayName "规则名" -Action Block
3. 修改方向、协议
powershell
# 协议改为TCP
Set-NetFirewallRule -DisplayName "规则名" -Protocol TCP
4. 修改端口(本地端口)
powershell
# 开放22端口
Set-NetFirewallRule -DisplayName "SSH放行" -LocalPort 22
# 多端口逗号分隔
Set-NetFirewallRule -DisplayName "网站端口" -LocalPort 80,443
三、重点:修改【远程 IP 地址】(适配你解除 IP 拉黑场景)
适用于:规则保留,新增 / 移除某个 IP
示例 1:直接重写全部远程 IP 列表
powershell
# 多个IP用英文逗号隔开
Set-NetFirewallRule -DisplayName "拉黑外部IP" -RemoteAddress "1.1.1.1,2.2.2.2"
# RemoteAddress = Any 代表不限制IP
Set-NetFirewallRule -DisplayName "SSH放行" -RemoteAddress Any
示例 2:从现有规则中【移除单个 IP】(最常用)
powershell
$ruleName = "拉黑外部IP"
$ipToRemove = "1.1.1.1"
# 获取现有IP列表
$addrFilter = Get-NetFirewallRule -DisplayName $ruleName | Get-NetFirewallAddressFilter
$ipList = $addrFilter.RemoteAddress -split "," | Where-Object { $_ -ne $ipToRemove }
# 更新规则
if ($ipList.Count -gt 0) {
Set-NetFirewallRule -DisplayName $ruleName -RemoteAddress $ipList
Write-Host "✅已移除IP $ipToRemove"
}
else {
Write-Host "⚠️列表为空,建议直接删除整条规则"
}
示例 3:向现有规则【追加新 IP】
powershell
$ruleName = "拉黑外部IP"
$newIp = "3.3.3.3"
$addrFilter = Get-NetFirewallRule -DisplayName $ruleName | Get-NetFirewallAddressFilter
$oldList = $addrFilter.RemoteAddress -split ","
$newList = ($oldList + $newIp) | Select-Object -Unique
Set-NetFirewallRule -DisplayName $ruleName -RemoteAddress $newList
四、修改规则名称、描述
powershell
# 修改显示名称
Set-NetFirewallRule -DisplayName "旧名称" -NewName "内部唯一名称" -DisplayName "新名称"
# 添加备注描述
Set-NetFirewallRule -DisplayName "规则名" -Description "用于拦截扫描IP"
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快