如何在PowerShell中修改已有的出站防火墙规则?
美国、香港服务器
如何在PowerShell中修改已有的出站防火墙规则?
08-07 来源:
基础通用语法
powershell
Set-NetFirewallRule -DisplayName "你的出站规则名称" [追加参数]
注意:Set-NetFirewallRule 是覆盖式更新,只写你需要变更的项,不要重复填写所有参数。
先确认规则(必做步骤)
powershell
# 查看所有出站规则列表
Get-NetFirewallRule -Direction Outbound | Select DisplayName,Action,Enabled
# 查看单条出站规则完整详情
Get-NetFirewallRule -DisplayName "出站规则名称" | Format-List *
# 查看IP、端口筛选条件
Get-NetFirewallRule -DisplayName "出站规则名称" | Get-NetFirewallAddressFilter
Get-NetFirewallRule -DisplayName "出站规则名称" | Get-NetFirewallPortFilter
高频修改场景模板(直接套用)
1. 启用 / 禁用出站规则
powershell
#启用
Set-NetFirewallRule -DisplayName "出站阻止访问外网80" -Enabled True
#禁用
Set-NetFirewallRule -DisplayName "出站阻止访问外网80" -Enabled False
2. 修改动作:Allow ↔ Block
powershell
#改为阻止
Set-NetFirewallRule -DisplayName "出站规则名称" -Action Block
#改为允许
Set-NetFirewallRule -DisplayName "出站规则名称" -Action Allow
3. 修改目标远程 IP(出站规则重点!RemoteAddress = 外部目标 IP)
场景 A:直接重写全部目标 IP 列表
powershell
Set-NetFirewallRule -DisplayName "出站规则名称" -RemoteAddress "1.1.1.1,2.2.2.2"
#不限IP(所有地址)
Set-NetFirewallRule -DisplayName "出站规则名称" -RemoteAddress Any
场景 B:现有规则【移除单个目标 IP】(常用)
powershell
$ruleName = "出站规则名称"
$delIP = "1.1.1.1"
$addrFilter = Get-NetFirewallRule -DisplayName $ruleName | Get-NetFirewallAddressFilter
$ipList = $addrFilter.RemoteAddress -split "," | Where-Object { $_ -ne $delIP }
if ($ipList.Count -gt 0) {
Set-NetFirewallRule -DisplayName $ruleName -RemoteAddress $ipList
Write-Host "已移除IP:$delIP"
} else {
Write-Host "IP列表为空,建议直接删除本条规则"
}
场景 C:现有规则【追加新目标 IP】
powershell
$ruleName = "出站规则名称"
$addIP = "3.3.3.3"
$addrFilter = Get-NetFirewallRule -DisplayName $ruleName | Get-NetFirewallAddressFilter
$oldList = $addrFilter.RemoteAddress -split ","
$newList = ($oldList + $addIP) | Select-Object -Unique
Set-NetFirewallRule -DisplayName $ruleName -RemoteAddress $newList
4. 修改目标端口(出站关注 -RemotePort)
powershell
#修改为单端口
Set-NetFirewallRule -DisplayName "出站规则名称" -RemotePort 3306
#多端口
Set-NetFirewallRule -DisplayName "出站规则名称" -RemotePort "80,443"
#端口范围
Set-NetFirewallRule -DisplayName "出站规则名称" -RemotePort "8000-9000"
5. 修改协议 TCP/UDP
powershell
Set-NetFirewallRule -DisplayName "出站规则名称" -Protocol UDP
6. 修改规则备注描述
powershell
Set-NetFirewallRule -DisplayName "出站规则名称" -Description "服务器禁止访问外部高危地址"
7. 修改规则显示名称
powershell
Set-NetFirewallRule -DisplayName "旧名称" -DisplayName "新出站规则名称"
关键区分(出站极易踩坑)
表格
参数 出站规则含义
-LocalPort 服务器本机端口,绝大多数出站场景保持 Any,一般不要修改
-RemotePort 外部目标服务器端口(核心修改项)
-RemoteAddress 服务器要访问的外部 IP / 网段
-Direction Outbound 不可通过 Set 修改方向!方向创建时确定,如需变更只能删旧规则新建
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快