New-ExoPSSession:索引超出范围

New-ExoPSSession: Index was out of range

我正在开发连接到 Exchange Online Microsoft 365 的脚本,但是当脚本执行 cmdlet“Connect-ExchangeOnline”时,它以错误结束。

具体说明为:

Connect-ExchangeOnline -Organization $myTenant -AppId $AppId -Certificate $myCert

参数中的变量是正确的,错误说:

New-ExoPSSession:索引超出范围。必须为非负数且小于集合的大小。参数名称:index

我可以成功加载模块。该脚本通过安装在我机器上的证书连接到 Exchange Online,我的脚本可以毫无问题地读取它。

我在 Powershell V4 和 .Net Framework 4.7.1 中 运行 这个脚本。如果我在另一台使用 PowerShell V5.1 的机器上执行相同的脚本,我可以成功连接到 Microsoft 365 Exchange Online。我尝试使用较低版本 (ExchangeOnlineManagement 1.0.1),但此版本没有这些参数(Organization、AppId 等...),我现在使用的是 2.0.3 版本。我不确定你是否可以将 Powershell 升级到 5.1。

有谁知道为什么我无法连接到 Exchange Online?

EXO V2 是 only supported on PowerShell 5.1 and later. If you want to use PowerShell 4.0 you will have to use EXO V1

我对 EXO 模块还不够熟悉,不知道如何或是否可以在当前环境中使用 EXO V1。如果现代 Exchange Online 管理需要 V2,则您需要升级节点以使用 WMF 5.1 或安装 PowerShell Core (7+) 并从那里使用 EXO V2。

PowerShell Core 与 Windows PowerShell 并行安装,因此如果您采用这种方式,影响其他需要 PowerShell 4.0 的代码的风险较小。

我正在使用 Windows PowerShell 5.1,这似乎是 ExchangeOnlineManagement 版本 2.0.4 中引入的问题。

降级到 2.0.3 对我有用。

我一直在为这个问题苦苦挣扎,终于找到了解决办法。
结果是 运行 Import-Module ExchangeOnlineManagementConnect-ExchangeOnline 导致此错误之前。
删除 Import-Module ExchangeOnlineManagement 足以让 Connect-ExchangeOnline 连接而不会出现 New-ExoPSSession:索引超出范围错误

PowerShell 需要以提升模式启动。但是,我的错误是由具有域管理员帐户的 RunAs 引起的。将 RunAs 与本地管理员帐户一起使用是可行的。 YMMV.