Windows Server上PowerShell远程管理防火墙需先启用WinRM并配置安全监听器,再通过NetSecurity模块在远程会话中执行Set-NetFirewallProfile、New-NetFirewallRule等命令精准操作规则,务必指定Profile、RemoteAddress等参数避免误配。
在 windows server 上用 powershell 远程管理并配置防火墙,核心是两步:先确保远程 powershell 通道畅通(winrm 正常工作),再用 netsecurity 模块命令精准操作防火墙规则。不是所有服务器默认就允许远程管理,也不是所有防火墙设置都能直接跨网络生效——尤其涉及配置文件、作用域和 uac 隔离时容易出错。
一、远程连接前必须完成的本地准备
目标服务器(被管端)需提前启用 WinRM 并开放对应端口。仅运行 Enable-PSRemoting -Force 不够安全,生产环境推荐以下组合操作:
- 以管理员身份运行 PowerShell,执行:
Enable-PSRemoting -SkipNetworkProfileCheck -Force - 限制访问来源 IP,避免全网开放:
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP" -RemoteAddress 10.10.5.0/24(按实际管理网段替换) - 确认 WinRM 监听器已启动:
winrm enumerate winrm/config/listener,应看到类似Listener [Source="GPO"] Address = * Port = 5985 Transport = HTTP - 如使用 HTTPS(推荐),还需绑定证书并开放 5986 端口,且防火墙要放行:
New-NetFirewallRule -DisplayName "WinRM HTTPS" -Direction Inbound -Protocol TCP -LocalPort 5986 -Action Allow
二、远程执行防火墙配置的典型方式
从管理机发起会话后,所有防火墙操作都在目标上下文中执行,无需额外权限提升(前提是登录账户有本地管理员权限):
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
- 建立交互式会话(适合调试):
Enter-PSSession -ComputerName SRV01 -Credential admin@contoso.local - 批量执行单条命令(推荐用于脚本化):
Invoke-Command -ComputerName SRV01 -ScriptBlock { Set-NetFirewallProfile -Profile Domain,Private -Enabled True } - 一次配置多台服务器:
Invoke-Command -ComputerName SRV01,SRV02,SRV03 -ScriptBlock { New-NetFirewallRule -DisplayName "Allow HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow -Profile Domain,Private }
三、关键防火墙操作命令速查
所有命令均在远程会话内或通过 Invoke-Command 执行,注意指定 -Profile 参数避免误配到 Public 配置文件:
- 启用全部配置文件的防火墙:
Set-NetFirewallProfile -Profile Domain,Private -Enabled True - 放行特定端口(如 SQL Server 默认端口):
New-NetFirewallRule -DisplayName "SQL Server" -Direction Inbound -Protocol TCP -LocalPort 1433 -Action Allow -Profile Domain,Private - 按程序路径放行(如自定义服务):
New-NetFirewallRule -DisplayName "MyApp Service" -Direction Inbound -Program "C:\App\service.exe" -Action Allow -Profile Private - 禁用某条规则(不删除,可恢复):
Disable-NetFirewallRule -DisplayName "RDP-In" - 查看当前生效的入站规则(含作用域和状态):
Get-NetFirewallRule -Direction Inbound | Where-Object { $_.Enabled -eq 'True' } | Format-Table DisplayName,Profile,Direction,Action
四、避坑要点:UAC、配置文件与作用域
很多远程命令看似成功却无效,问题常出在这三处:
- UAC 远程限制:即使管理员账户,远程会话默认无“提升令牌”。避免依赖需交互提权的操作;规则创建类命令本身不触发 UAC,但某些注册表级修改会失败。
-
配置文件匹配错误:服务器网卡若被系统识别为 Public 配置文件,而你只对 Domain/Private 生效的规则,将完全不生效。用
Get-NetConnectionProfile查看当前网络所属 Profile。 -
作用域未收紧:新建规则默认作用域为 Any,意味着任意源 IP 都能连。生产环境务必加
-RemoteAddress 10.10.5.0/24或-RemoteAddress 192.168.100.10限定管理网段。










