PowerShell是Windows防火墙最可靠、可复用、适合批量部署的管理方式,需以管理员权限运行、设置RemoteSigned执行策略、使用专业版/企业版系统,通过New-NetFirewallRule等cmdlet创建精准规则,支持循环批量操作与导入预定义规则集,并须验证启用状态及实际拦截效果。
powershell 是 windows 防火墙最可靠、可复用、适合批量部署的管理方式。它不依赖图形界面,规则直接写入系统策略层,生效快、可审计、易集成进运维流程。
确认环境与权限是否就绪
脚本运行前必须满足三项基础条件:
- 以管理员身份启动 PowerShell(右键 → “以管理员身份运行”)
- 执行策略允许本地脚本:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force(若Get-ExecutionPolicy -Scope CurrentUser返回Restricted) - 系统为 Windows 10/11 专业版、企业版或 Server 2016+(家用版缺少
NetSecurity完整功能)
创建精准有效的单条规则
关键不是堆参数,而是明确“谁、来干什么、走哪条路”:
- 封禁某 IP 访问 RDP:
New-NetFirewallRule -DisplayName "Block RDP from 192.168.5.100" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 192.168.5.100 -Action Block -Enabled True - 允许程序所有出站连接:
New-NetFirewallRule -DisplayName "Allow Chrome Outbound" -Direction Outbound -Program "C:\Program Files\Google\Chrome\Application\chrome.exe" -Action Allow - 开放整个子网访问 Web:
New-NetFirewallRule -DisplayName "Allow Web from 10.0.2.0/24" -Direction Inbound -Protocol TCP -LocalPort 80,443 -RemoteAddress 10.0.2.0/24 -Action Allow
注意:-RemoteAddress和-LocalPort必须按实际网络拓扑填写;未指定-Profile时默认作用于 Domain、Private、Public 全部配置文件,如只需内网生效,加-Profile Private
批量操作与规则复用更高效
手动一条条敲既慢又易错,推荐两种实践方式:
- 循环封禁多个 IP:
"192.168.1.10", "192.168.1.11", "192.168.1.12" | ForEach-Object { New-NetFirewallRule -DisplayName "Block $_" -Direction Inbound -RemoteAddress $_ -Action Block } - 直接加载成熟规则集(如 WindowsFirewallRuleset):进入解压目录后,运行
.\SetupFirewall.ps1可交互选择启用“数据库”“浏览器”“远程管理”等模块,规则已按场景分组、测试过兼容性,避免重复踩坑
验证与日常维护不能跳过
规则建完不等于生效,务必做三件事:
- 查看是否创建成功:
Get-NetFirewallRule -DisplayName "Block RDP from*" - 检查是否启用:
Get-NetFirewallRule -DisplayName "Block RDP from*" | Select DisplayName, Enabled, Direction, Action - 测试实际拦截效果:从被封 IP 尝试 telnet 目标端口,或用
Test-NetConnection -ComputerName localhost -Port 3389 -SourceAddress 192.168.5.100(需开启详细日志支持诊断)
如需临时停用:Disable-NetFirewallRule -DisplayName "Block RDP from*";彻底删除:Remove-NetFirewallRule -DisplayName "Block RDP from*"
不复杂但容易忽略。


















