首页/系统/Windows 运维速查/PSSession 清理与断链处理

PSSession 清理与断链处理

WinRM 会话会占远端资源:断链会话要么 Disconnect/Connect 复用、要么 Remove 清理,避免撞配额。

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

PSSession 清理与断链

WinRM 远程会话会在远端占用资源:已经断开但未删除的会话依然计入每个用户的并发上限(默认 30 个)。会话积累到一定程度后,新建连接就会报「远端 shell 已占用」或配额已达上限。因此日常要养成查看、断开、清理的习惯,把失效会话及时回收,保证远程通道随时可用。

基本信息

适用平台Windows PowerShell 远程(WinRM)
查看会话Get-PSSession
断开与重连Disconnect-PSSession / Connect-PSSession
清理Remove-PSSession
配额项MaxShellsPerUser,默认 30

典型使用场景

  • 网络抖动产生大量 Broken 会话后批量清理
  • 计划维护时先断开会话,维护完成后再重连复用
  • 排查「远端 shell 配额已满」的报错来源
  • 长任务执行期间保持会话可恢复,而不是从头重跑
  • 定期巡检运维机上残留的会话,避免配额被无声占满
  • 自动化脚本执行完显式回收会话,防止长期运行累积泄漏
  • 多人在同一台运维机上共用账号时,先看清会话归属再清理

常用示例

常用示例
Get-PSSession | Format-Table Id, ComputerName, State, Availability, IdleTimeout
# 清理失联的断开会话:
Get-PSSession | Where-Object State -eq 'Broken' | Remove-PSSession
# 计划维护:先断开,回来再连
$s = Get-PSSession -ComputerName web01
Disconnect-PSSession -Session $s
Connect-PSSession -Session $s
# 一次性清理本机全部会话(先确认没有进行中的任务):
Get-PSSession | Remove-PSSession
# 按目标主机过滤,只清理指定机器的会话:
Get-PSSession -ComputerName web01 | Remove-PSSession

会话状态处理

状态含义处理建议
Opened正常可用保持或按需复用
Disconnected断开但仍占用远端配额按需重连复用或直接清理
Broken链路中断的失联会话删除后重建
Closed已关闭无需处理
Disconnected 状态的会话仍然占用远端并发配额,长期挂着也会被服务端按超时清理,所以要么及时重连复用,要么主动删除,不要放任积累。把配额与超时取值写进运维手册,交接时不容易踩坑。
删除会话会终止其中正在运行的任务,批量清理前先确认没有正在执行的作业,避免把同事的长任务一并中断。脚本里最好在 finally 块中清理会话,网络异常时也能释放资源。

易错点

  • 遇到配额报错反复重试:应优先清理 Disconnected 与 Broken 状态的会话
  • 清理时误删进行中的会话:长任务被中断且不易察觉
  • 会话泄漏长期不管:配额被占满后整条运维通道失效
  • 只清本机记录不确认远端状态:远端残留进程仍在占用资源

数据来源与参考

  • Microsoft Learn:Disconnect-PSSession
  • Microsoft Learn:about_PSSessions

相关工具

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