远程进入 Exchange 2016 配置时缺少核心 PowerShell 命令

远程进入 Exchange 2016 配置时缺少核心 PowerShell 命令

我遇到了一个问题,当远程访问 Exchange 2016 服务器时,简单的命令(例如 Get-Module)不存在。

我正在运行的命令是:

Invoke-Command -ConfigurationName Microsoft.Exchange -ConnectionUri http://SERVERNAME/powershell -Authentication Kerberos -Credential $cred -ScriptBlock { Get-Module }

结果是:

The term 'Get-Module' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    + CategoryInfo          : ObjectNotFound: (Get-Module:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
    + PSComputerName        : SERVERNAME

其他核心命令(如 Get-Command)按预期工作 - 包括 Exchange 命令(Get-Mailbox 等)。

我所做的唯一更改是将 Powershell 站点的 IIS 中的 PSLanguageMode 更改为“FullLanguage”。撤消此更改(并重新启动适用的池和站点)不会影响结果。

我并不经常处理 Exchange 或 PowerShell,因此非常感谢您的任何建议。

答案1

Exchange 服务器被设计为受限端点。会话配置Microsoft.Exchange是具有有限公开方法的基本配置架构。由于 Exchange 服务器暴露于外部世界,因此设计人员非常注重安全性。您尝试使用的命令在现有上下文中很简单,因为您指定了实例化所需的环境。

强烈建议您在现有会话配置(用于远程)内工作或在本地运行代码以访问所有方法。但是,如果您的风险承受能力允许,您可以创建自定义会话配置架构使用您在此处找到的信息

相关内容