Windows 错误: WinRM Shell 客户端无法处理请求
没有.
这种错误通常发生在远程管理任务中. Windows Remote Management (WinRM) 或是 PowerShell Remoting. 它表示本地计算机和远程服务器之间的连接会话 (shell处理器) 在操作中断,失同步或受损.
最常见的原因包括:
- Network Instability: 短暂的网络下降打破了活跃的WSMan会话手柄.
- Session Timeouts: 远程服务器关闭了置连接,使本地处理器无效.
- Resource Limits: 远程服务器达到每名用户的最高允许活跃.
- Service Restarts: 没有
WinRM在您的脚本运行时,目标机器的服务重新启动.
逐步修复问题
为了解决问题,请遵循以下解决方案.
修复1:重新启动WinRM服务
在本地机器和远程机器上更新 WinRM 服务通常会清除无效的手柄.
- 打开门 Start Menu 寻找 cmd,右键点击它,并选择 Run as administrator.
- 键入下面的命令来停止服务,然后按下 Enter:
net stop winrm - 键入下面的命令重新启动服务,然后按下 Enter:
net start winrm
修复2:增加每个用户的最大外
如果您正在运行复杂的脚本,则可能会达到并发远程的默认限制.您可以在远程服务器上增加此值.
- 打开 PowerShell as an Administrator 在目的机上.
- 运行此命令来检查您的当前限制:
Get-Item WSMan:\localhost\Shell\MaxShellsPerUser - 通过运行:
Set-Item WSMan:\localhost\Shell\MaxShellsPerUser 50
修复3: 重新建立PowerShell会话
如果此错误出现在长期运行的 PowerShell 脚本中,则现有会话对象已死亡.您必须明确关闭破碎的会话并创建一个新的.
- 在脚本中寻找您的会话变量 (通常名为
$session) 没有. - 添加代码以安全地删除破损的会话:
Remove-PSSession $session -ErrorAction SilentlyContinue - 在执行下一个命令之前创建一个新的会话:
$session = New-PSSession -ComputerName "RemoteComputerName" Invoke-Command -Session $session -ScriptBlock { YourCommand }
修复4:调整MaxMemoryPerShellMB设置
远程机器的低内存配置可能会导致WSMan shell主机进程崩,导致无效处理.
- 打开 PowerShell as an Administrator 在远程机器上.
- 检查每个 shell 的当前内存限制:
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB - 将内存限制增加到 2048 MB (2 GB),以确保脚本不会耗尽内存:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048 - 重新启动 WinRM 服务以应用更改:
Restart-Service winrm
可能有一些错误.. Learn Microsoft