powershell批量管理windows防火墙规则的核心是调用netsecurity模块cmdlet,需以管理员权限运行、设置remotesigned策略、启用防火墙服务,并通过new-netfirewallrule等命令按需创建规则,支持ip、端口、程序级控制,还可导入预定义规则集实现选择性加载与gpo部署。
powershell 批量管理 windows 防火墙规则,核心是调用 netsecurity 模块中的 cmdlet,以管理员权限运行脚本,通过结构化参数组合、管道和循环实现高效、可复现的规则操作。不是堆砌命令,而是按意图精准控制。
确保环境可用是前提
没权限、没策略、没模块,脚本跑不起来:
- 必须以管理员身份运行 PowerShell(右键 → “以管理员身份运行”)
- 执行策略需允许本地脚本:运行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force,再用Get-ExecutionPolicy -Scope CurrentUser确认返回RemoteSigned - 确认模块已就绪:
Get-Module NetSecurity -ListAvailable有输出即表示可用(Windows 10/11 专业版及以上、Server 2016+ 默认内置) - 确保防火墙服务启用:
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True
批量创建入站/出站规则
单条规则靠 New-NetFirewallRule,批量靠管道或数组循环,避免手动重复:
通过 handsfree-windows CLI控制 Windows 本机应用 (UIA) 和浏览器 (Playwright) 的引导技能,用于自动化或测试桌面应用。
- 封禁多个恶意 IP 访问 RDP 端口:
"192.168.5.100", "203.0.113.5", "203.0.113.6" | ForEach-Object { New-NetFirewallRule -DisplayName "Block RDP from $_" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress $_ -Action Block -Enabled True } - 只允许某网段访问 Web 服务(端口 80/443):
New-NetFirewallRule -DisplayName "Allow DevNet HTTP/HTTPS" -Direction Inbound -Protocol TCP -LocalPort 80,443 -RemoteAddress 10.20.0.0/16 -Action Allow -Profile Domain,Private - 阻止某程序所有外连(支持通配符):
New-NetFirewallRule -DisplayName "Block Slack Outbound" -Direction Outbound -Program "C:\Users\*\AppData\Local\slack\slack.exe" -Action Block
批量启用、禁用或查询规则组
不用逐条点开,用显示名称或分组名统一操作:
- 启用整个“远程桌面”功能组:
Enable-NetFirewallRule -DisplayGroup "Remote Desktop" - 禁用所有与“文件和打印机共享”相关的规则:
Disable-NetFirewallRule -DisplayGroup "File and Printer Sharing" - 快速查出所有自定义规则(排除系统默认规则)用于审计:
Get-NetFirewallRule | Where-Object {$_.IsSystemRule -eq $false} | Select-Object DisplayName, Enabled, Direction, LocalPort, RemoteAddress | Export-Csv firewall-custom.csv -NoTypeInformation
导入预定义规则集提升可靠性
对中大型环境,不建议从零手写全部规则。可引入成熟开源规则集(如 WindowsFirewallRuleset),它按用途分类、支持选择性加载、便于版本管理和 GPO 集成:
- 克隆项目后进入目录,运行
.\SetupFirewall.ps1可交互式启用全部或部分规则组 - 若只需浏览器相关策略,直接执行
.\Rules\Browsers\Enable-BrowserRules.ps1 - 这类脚本内部仍基于
New-NetFirewallRule和Enable-NetFirewallRule,但封装了验证逻辑和依赖检查










