【问题标题】:New-ExoPSSession: Index was out of rangeNew-ExoPSSession:索引超出范围
【发布时间】:2021-12-11 03:27:57
【问题描述】:

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

具体说明为:

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

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

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

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

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

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

【问题讨论】:

  • 验证用于New-ExoPSSession cmdlet 的参数。如果您使用的是数组(例如 $somevalues[3] 且 $somevalues 的长度为 2,则 3 超出范围。这是发生此类错误的示例。
  • 感谢您的回复。 New-ExoPSSession 是一个内部 cmdlet(它在 Connect-ExchangeOnline 中),我不调用此方法。所有变量都是字符串,而不是数组,除了 $MyCert 是证书类型。

标签: powershell powershell-4.0 microsoft365 office365-exchange


【解决方案1】:

EXO V2 是only supported on PowerShell 5.1 and later。如果你想使用 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 的代码的风险较小。

【讨论】:

  • 我在您的链接中看到 Powershell 的最低版本。我不知道为什么在 Powershell 库中表明 ExchangeOnlineManagement 2.0.3 的次要版本是“PowerShell 3”。我想我会把脚本移到另一台机器上。
【解决方案2】:

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

降级到 2.0.3 对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多