症状
安装 Microsoft Exchange Server 2019、2016 或 2013 的 2021 年 4 月安全更新(或更高版本更新)后,应用程序将开始返回以下错误消息之一:
消息 1
此运行空间不支持语法。 如果运行空间处于非语言模式,则可能会发生这种情况。
消息 2
System.Management.Automation.RemoteException 发生异常:此运行空间不支持该语法。 如果运行空间处于非语言模式,则可能会发生这种情况。 在 System.Management.Automation.Runspaces.AsyncResult.EndInvoke() 的 System.Management.Automation.PowerShell.CoreInvokeRemoteHelper[TInput,TOutput](PSDataCollection'1 输入, PSDataCollection'1 输出,
在这种情况下,应用程序不会通过远程 PowerShell 从运行 Exchange Server 的服务器检索信息。 在某些情况下,应用程序停止响应。
原因
基于 Exchange 服务器上的 Exchange 管理控制台终结点已从 FullLanguage 模式更改为 NoLanguage 模式。 使用远程 PowerShell 的 FullLanguage 模式功能的应用程序在处理远程 PowerShell 调用时,会遇到“Symptoms”一节中描述的错误。
解决方案
为了解决此问题,应用程序开发人员已更新应用程序,以适应 Exchange Shell 新的、限制性更强的状态。
此外,我们建议使用以下任一解决方案:
-
请确保使用 .invoke() 的所有调用,同时也使用 .AddCommand(),而不是 .AddScript()。 有关详细信息,请查看来自 about_Language_Modes - PowerShell | Microsoft Docs 指南。
-
实现导入的会话,而不是使用 .invoke()。 有关详细信息,请参阅 GitHub 上的 David-Barrett-MS/ExchangePowerShellAutomationSample。 此网页提供了一个示例应用程序,演示如何以编程方式连接到 Exchange 远程 PowerShell 并运行 cmdlet。
详细信息
有关 2021 年 4 月安全更新的详细信息,请参阅以下 Exchange 团队博客文章: