Microsoft 365 中的 RPS 中的无效ShellID 错误

原始 KB 编号: 3090768

症状

当脚本运行时间过长或在 Microsoft 365 中的远程 PowerShell (RPS) 中运行管理 cmdlet 时,会间歇性地收到类似于以下内容的错误消息:

处理远程命令的数据失败,并显示以下错误消息:
[ClientAccessServer=Server1,BackEndServer=Server2,RequestId=<>,TimeStamp=DateTime] [FailureCategory=WSMan-InvalidShellID] 对具有 ShellId <> 的 Windows 远程 Shell 的请求失败,因为在服务器上找不到 shell。 可能的原因包括:指定的 ShellId 不正确或 shell 在服务器上不再存在。 提供正确的 ShellId 或创建新的 shell,然后重试操作。 有关详细信息,请参阅about_Remote_Troubleshooting帮助主题。

+ CategoryInfo:OperationStopped: (mail.contoso.com:String) [], PSRemotingTransportException

+ FullyQualifiedErrorId: JobFailure

+ PSComputerName:mail。 contoso.com

原因

如果满足以下条件,则会出现此问题:

  • 使用与多区域环境中的已启用邮件的用户关联的帐户 (MEU) 。
  • Connections通过不同于用户区域的区域进行路由。

从要升级的轮换中删除后端服务器时,可能会出现此错误。 此外,此问题很少发生。

解决方案

方案 1 - 当脚本长时间运行或自动工作流停止时

在这种情况下,如果服务器在进行过程中从轮换中删除,则可能需要将脚本更改为自动重新连接。 为此,可以使用脚本中的相应错误处理来捕获错误。 然后,重新连接并重启进程。

方案 2 - 在 RPS 中运行管理 cmdlet 时

在这种情况下,应重新运行 cmdlet。 应联系其他后端服务器,然后该 cmdlet 应成功运行。

注意

在多区域Exchange Online部署中,建议使用已启用邮箱的管理帐户。 这可确保通过当前环境建立 RPS 连接。 如果管理帐户与 MEU 相关联,则连接可以通过其他区域路由。 此行为可能会延迟连接或触发错误。

Microsoft 可能需要 Fiddler 跟踪来调查此问题。 如果需要,支持工程师将发送支持诊断包,以安全地捕获和上传此信息。 若要在 Fiddler 跟踪中捕获此信息,必须添加一个 PowerShell 会话选项,并将 ProxyAccessType 参数设置为 IEConfig。 例如:

Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://mail.contoso.com/powershell -Credential (Get-Credential) -Authentication Basic -AllowRedirection -SessionOption (New-PSSessionOption -ProxyAccessType IEConfig))

更多信息

有关错误处理的详细信息,请参阅 周末脚本程序:使用 Try、Catch、Finally 块进行 PowerShell 错误处理