windows powershell 远程管理核心是启用 winrm 服务,远程服务器需运行 enable-psremoting -force 配置监听器与防火墙,本地通过 invoke-command 或 enter-pssession 连接,要求信任主机、管理员权限及开放 5985/5986 端口。

Windows PowerShell 远程管理 Windows 服务器,核心是启用并利用 Windows 远程管理(WinRM)服务,通过 Invoke-Command、Enter-PSSession 等 cmdlet 在远程服务器上执行命令或交互式操作。关键不在“能不能连”,而在“是否已正确配置两端”——本地计算机只需有 PowerShell,远程服务器必须主动开启远程处理能力。
远程服务器端必须启用 PowerShell 远程处理
Windows Server 默认已启用,但 Windows 10/11 或 Server Core 环境需手动开启:
- 以管理员身份打开 PowerShell,运行:
Enable-PSRemoting -Force - 该命令会自动配置 WinRM 服务、防火墙规则(开放 5985/5986 端口)、监听器,并设置启动类型为自动
- 若遇到“公用网络”报错,加
-SkipNetworkProfileCheck参数绕过(仅限可信内网) - 验证是否成功:运行 winrm quickconfig 或检查
Get-WSManInstance winrm/config/listener
本地电脑发起连接的常用方式
有两种主流模式,适用不同场景:
-
一次性命令(推荐用于脚本或批量任务):
使用Invoke-Command -ComputerName Server01 -ScriptBlock { Get-Service wuauserv }
支持同时向多台服务器发送相同命令,例如:Invoke-Command -ComputerName Server01,Server02 -ScriptBlock { Restart-Service spooler -Force } -
交互式会话(适合排查或连续操作):
运行Enter-PSSession -ComputerName Server01,进入类似本地 PowerShell 的界面
退出用Exit-PSSession,不关闭连接时可用Disconnect-PSSession暂存会话
注意权限与网络基础要求
远程管理不是单纯“能 ping 通”就行,还需满足以下条件:
- 本地与远程计算机需在同一域,或双方已互相添加对方计算机名到信任主机列表:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "Server01,192.168.1.100" -Force - 执行者账户在远程服务器上有管理员权限,或至少属于
Remote Management Users组 - 防火墙允许入站 TCP 5985(HTTP)或 5986(HTTPS),建议生产环境启用 HTTPS 并配置证书
- 若需跨跳转服务器访问(如 Client → JumpBox → Target),需额外启用 CredSSP 委托,但存在安全风险,应严格限制使用范围
部分命令可绕过远程处理直接工作
并非所有管理操作都依赖完整远程会话。很多内置 cmdlet 自带 -ComputerName 参数,例如:
Get-Service -ComputerName Server01Get-Process -ComputerName Server01Get-HotFix -ComputerName Server01- 这类命令走的是 WMI 或 DCOM 协议,无需提前启用 PSRemoting,但功能较有限,且不支持复杂脚本逻辑











