首页/系统/Windows 运维速查/Enable-PSRemoting 启用 PowerShell 远程

Enable-PSRemoting 启用 PowerShell 远程

PowerShell 远程的能力开关:确保 WinRM 服务运行、注册会话配置并打开例外;-SkipNetworkProfileCheck 供特殊场景。

Windows 运维速查系统更新于 2026-10-13

命令是干什么的

Enable-PSRemoting 一次性完成 PowerShell 远程所需的前置:启动 WinRM 服务并设为自启动、注册默认会话配置、在防火墙打开相应例外。它只需在被控端执行一次;域环境往往由组策略统一下发 WinRM 配置,此时本地开关可能被策略覆盖。

两端为什么表现不同

服务器版系统出厂即开启 WinRM,客户端版(Windows 10/11)默认关闭,这是两者远程管理能力差异的根源。域环境通常用组策略统一下发 WinRM 服务设置、监听器与防火墙例外,此时手工执行的 Enable-PSRemoting 往往是被覆盖的一方,动手前先用 gpresult /h 导出策略报告确认管辖关系。

基本信息

适用平台Windows 7/10/11 与 Server 2008 R2 及以后,PowerShell 3.0+
权限要求在目标机上以管理员权限运行
语法Enable-PSRemoting [-Force] [-SkipNetworkProfileCheck]
验证方式本机 Test-WSMan;跨机 Invoke-Command -ComputerName 目标 { $env:COMPUTERNAME }

典型使用场景

  • 首次在客户端系统(Win10/11)上开启远程管理能力
  • 批量纳管前统一放通 WinRM,省去逐台点防火墙界面
  • 本机排障:Invoke-Command 到 localhost 验证远程栈是否完整
  • 脚本部署前的前置检查,确认目标机 PSRemoting 状态
  • 安全加固后的回归验证,确认改完策略远程仍然可用

常用示例

常用示例
Enable-PSRemoting -Force                 # 免交互启用全部前置项
Test-WSMan -ComputerName localhost       # 本机 WinRM 栈是否正常
Invoke-Command -ComputerName localhost { $env:COMPUTERNAME }   # 验证远程执行
Get-PSSessionConfiguration               # 查看已注册的会话配置
Get-NetConnectionProfile                 # 网络类别为 Public 会影响放通

前置项读法

前置项内容验证方式
WinRM 服务启动类型设为自动并处于运行Get-Service WinRM
会话配置注册 Microsoft.PowerShell 端点Get-PSSessionConfiguration
防火墙例外放通 5985(HTTP) 与 5986(HTTPS)Get-NetFirewallRule -DisplayGroup 'Windows 远程管理'
网络类别域或专用网络才允许例外Get-NetConnectionProfile
服务器版系统默认已启用 PSRemoting,客户端版(Win10/11)默认关闭;自动化脚本部署前应先探测状态再决定是否启用。
-SkipNetworkProfileCheck 会放宽公用网络限制,只适用于受控环境;域策略可能覆盖本地设置,域机执行前先用 gpresult 核实生效策略。
排查远程失败先分清两端:本机 Test-WSMan 通、跨机不通,问题多在目标机的监听器或防火墙;两端都不通,则要确认 WinRM 服务是否被策略关闭。

易错点

  • -SkipNetworkProfileCheck 扩大可达范围,笔记本接入不可信网络时会同时暴露 5985
  • 域策略已下发 WinRM 配置时,本地 Enable-PSRemoting 的结果可能被覆盖
  • 启用后未验证会话配置,跨机仍报拒绝连接,实际是端点未注册或服务未启动
  • 在非目标机上执行只会影响本机,误以为远端机器已放通

数据来源与参考

  • Microsoft Learn:Enable-PSRemoting

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌