powershell配置windows防火墙最直接高效,需确保mpssvc服务运行并启用全部配置文件;按服务类型创建入站规则时须明确方向、端口、协议及作用域;通过enable/disable/remove-netfirewallrule管理生命周期,并注意显式阻止优先于允许、单ip优先于网段的规则优先级逻辑。
powershell 是配置 windows 防火墙服务规则最直接、可复用性最强的方式,尤其适合批量部署和持续维护。关键不是堆砌命令,而是理解规则生效的前提、作用域和优先级逻辑。
确保防火墙服务已启用并运行
所有规则操作都依赖 mpssvc(Windows Defender 防火墙服务)处于运行状态。若服务被禁用或停止,规则不会生效,哪怕脚本执行成功。
- 检查服务状态:
Get-Service mpssvc,确认状态为 Running - 如未运行,执行:
Start-Service mpssvc - 同时启用全部配置文件(域、专用、公用):
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True
按服务类型创建典型入站规则
服务类规则通常围绕端口+协议展开,需明确指定方向、端口、协议及作用范围,避免默认绑定到“所有网络位置”引发连通问题。
-
RDP(远程桌面)仅限运维IP:
New-NetFirewallRule -DisplayName "Allow RDP from AdminNet" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 10.10.20.0/24 -Action Allow -Profile Private -
SQL Server 白名单访问:
New-NetFirewallRule -DisplayName "Allow SQL from AppServers" -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress @("192.168.5.10", "192.168.5.11") -Action Allow -
Web 服务(HTTP/HTTPS)开放给内网:
New-NetFirewallRule -DisplayName "Allow HTTP/HTTPS Inbound" -Direction Inbound -Protocol TCP -LocalPort 80,443 -RemoteAddress LocalSubnet -Action Allow
管理规则生命周期:启用、禁用、删除与验证
规则不是“建完就完”,日常运维中常需临时关闭、批量调整或清理冗余项。PowerShell 提供原子化操作,避免图形界面误点风险。
- 按显示名称启用一组规则:
Enable-NetFirewallRule -DisplayName "Allow RDP*" - 禁用某类服务相关规则:
Disable-NetFirewallRule -DisplayGroup "Remote Desktop" - 删除不再使用的规则:
Remove-NetFirewallRule -DisplayName "Block Legacy FTP" - 快速验证是否生效:
Get-NetFirewallRule -DisplayName "Allow RDP*" | Select DisplayName, Enabled, Direction, Profile
注意规则优先级与冲突规避
Windows 防火墙不支持手动拖动排序,但遵循严格匹配优先级:显式阻止 > 显式允许 > 默认策略;单个IP > IP段 > LocalSubnet。因此,白名单规则必须比泛化允许规则更早存在,且不能与已有阻止规则重叠。
- 例如:先建
-RemoteAddress 192.168.1.5的允许规则,再建-RemoteAddress 192.168.1.0/24的阻止规则,后者会覆盖前者 - 建议命名带上下文,如
"Allow-API-Gateway-10.20.30.40",便于后期排查 - 生产环境上线前,用
Test-NetConnection -ComputerName localhost -Port 3389 -SourceComputerName 192.168.1.5模拟验证











