PowerShell远程管理默认使用WinRM的5985(HTTP)和5986(HTTPS)端口;若需改用非标端口(如5987),须手动创建新侦听器、更新防火墙规则并显式指定端口连接。
powershell 远程管理默认使用 winrm 的标准端口:http 为 5985,https 为 5986。若出于安全或网络策略需要改用非标准端口(如 5987、6000 等),需手动修改 winrm 侦听器配置,并同步更新防火墙规则。整个过程不涉及 powershell 远程桌面(rdp)端口,而是针对 enable-psremoting 启用的 ws-management 通信。
修改 WinRM 监听端口
WinRM 端口由注册表中 WSMan:\Localhost\Listener 下的侦听器控制,可通过 PowerShell 直接修改:
-
先查看当前侦听器配置:
Get-ChildItem WSMan:\LocalHost\Listener
-
删除默认侦听器(谨慎操作,建议先备份):
Remove-Item -Path WSMan:\LocalHost\Listener\Listener_* -Recurse -Force
-
创建新侦听器并指定自定义端口(例如 5987):
New-Item -Path WSMan:\LocalHost\Listener -Transport HTTP -Address * -Port 5987
⚠️ 注意:
-Address *表示监听所有 IPv4 地址;若需仅限本地或特定 IP,可替换为-Address IPv4:127.0.0.1或具体网卡地址。
更新防火墙入站规则
WinRM 默认只对 5985/5986 开放防火墙例外。启用新端口后,必须显式放行:
New-NetFirewallRule -DisplayName "WinRM - Custom Port 5987" ` -Direction Inbound -Protocol TCP -LocalPort 5987 ` -Action Allow -Profile Domain,Private,Public
若原规则仍存在(如旧的 5985 规则),可根据需要禁用或删除:
Disable-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)" # 或彻底移除 Remove-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)"
验证与连接测试
-
确认服务已监听新端口:
netstat -ano | findstr :5987
-
从本地或远程机器测试连接(需提前在目标机运行
Enable-PSRemoting -Force并信任主机):Test-WsMan -ComputerName 192.168.1.100 -Port 5987 -UseSSL:$false
-
实际建立会话时指定端口:
Enter-PSSession -ComputerName 192.168.1.100 -Port 5987 -UseSSL:$false
补充说明
- HTTPS 端口同样可自定义,但需额外配置证书绑定(使用
winrm create或New-WSManInstance指定-CertificateThumbprint)。 - 所有修改均需以管理员身份运行 PowerShell,否则会提示“访问被拒绝”。
- 若使用组策略批量部署,可通过 GPO 中的“计算机配置 → 管理模板 → Windows 组件 → Windows Remote Management”路径配置侦听端口和证书设置。
- 修改端口后,原有
Enter-PSSession -ComputerName xxx命令将失败,必须显式加-Port参数,否则仍尝试 5985。
不复杂但容易忽略端口和防火墙的同步调整。


















