需完成服务启用、信任配置与会话建立三类操作:一、运行enable-psremoting -force启用winrm;二、用set-item配置trustedhosts;三、通过enter-pssession、invoke-command或new-pssession实现交互式、一次性或多阶段远程管理。

如果您希望在 Windows 11 环境中通过 PowerShell 实现对另一台电脑的远程管理,则需完成服务启用、信任配置与会话建立三类关键操作。以下是实现该目标的多种可行路径:
一、启用目标主机的 WinRM 远程管理服务
PowerShell 远程管理依赖 Windows Remote Management(WinRM)服务,该服务在 Windows 11 客户端默认处于禁用状态,必须显式启用并注册监听器,否则远程连接请求将被直接拒绝。
1、以管理员身份运行 Windows 终端(或 PowerShell),确保拥有提升权限。
2、执行命令:Enable-PSRemoting -Force,该命令将自动启动 WinRM 服务、设为开机自启、创建必要防火墙规则并注册默认配置。
3、验证监听器是否生效:运行 winrm enumerate winrm/config/listener,确认输出中包含类似 Transport = HTTP 的条目,表示监听已就绪。
二、配置本地客户端的信任主机列表(非域环境必需)
当目标主机未加入同一 Active Directory 域时,PowerShell 默认拒绝与未知主机建立连接,以防止中间人攻击;此时必须将目标 IP 或主机名明确添加至本地 WSMan 客户端的可信主机列表中。
1、在本地控制端 PowerShell 中执行:Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.100" -Force(请将 IP 替换为目标主机实际地址)。
2、如需添加多个目标,使用英文逗号分隔:Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.100,192.168.1.101" -Force。
3、查看当前已配置的可信主机:Get-Item WSMan:\localhost\Client\TrustedHosts。
三、使用 Enter-PSSession 建立交互式远程会话
Enter-PSSession 启动一个持久、上下文隔离的远程 PowerShell 会话,所有后续命令均在目标主机上实时执行,适用于需连续输入多条指令的运维场景。
1、确保您已掌握目标主机上具备管理员权限的账户凭据(如本地 Administrator 或域管理员账号)。
2、执行:Enter-PSSession -ComputerName 192.168.1.100 -Credential (Get-Credential),系统将弹出图形化凭据窗口供输入用户名与密码。
3、成功连接后,命令提示符将变为 [192.168.1.100]: PS>,表明当前处于远程主机的 PowerShell 环境中。
4、可立即执行任意本地有效命令,例如:Get-Process | Where-Object CPU -GT 50,结果完全由远程主机返回。
5、退出会话:键入 Exit-PSSession 或按 Ctrl+Z 后回车。
四、使用 Invoke-Command 执行一次性远程命令
Invoke-Command 无需维持长期会话,适合单次批量操作或脚本调用,支持向单台或多台主机并行发送相同命令,响应结果直接回传至本地控制台。
1、在本地 PowerShell 中执行:Invoke-Command -ComputerName 192.168.1.100 -ScriptBlock { Get-Service WinRM } -Credential (Get-Credential)。
2、若需同时向多台主机执行,将 ComputerName 参数改为数组形式:Invoke-Command -ComputerName @("192.168.1.100","192.168.1.101") -ScriptBlock { Restart-Service WSearch -Force } -Credential (Get-Credential)。
3、结果将以带主机名前缀的表格形式返回,每行标注来源计算机,便于区分执行上下文。
五、通过 PSSession 持久化会话对象进行多阶段操作
PSSession 是一种命名式会话对象,可在断开连接后重新接入,也可跨多个命令共享变量与状态,适用于复杂任务流,例如先获取信息再基于结果决策后续动作。
1、创建命名会话:$session = New-PSSession -ComputerName 192.168.1.100 -Credential (Get-Credential)。
2、将命令提交至该会话:Invoke-Command -Session $session -ScriptBlock { $disk = Get-PSDrive C; $disk.Free }。
3、将远程变量导入本地作用域:Invoke-Command -Session $session -ScriptBlock { $env:COMPUTERNAME },或使用 Import-PSSession 导入远程模块。
4、关闭会话:Remove-PSSession -Session $session,释放资源。











