我正在开发一个连接到Exchange Online Microsoft 365的脚本,但是当脚本执行cmdlet "Connect-ExchangeOnline“时,它会以错误结束。
具体的指示是:
Connect-ExchangeOnline -Organization $myTenant -AppId $AppId -Certificate $myCert参数中的变量是正确的,错误表示:
New:索引超出了范围。必须是非负的,并且小于集合的大小。参数名称:索引
我可以成功地加载模块。该脚本通过安装在我的机器上的证书连接到Exchange Online,我的脚本可以毫无问题地读取它。
我正在Powershell V4和.Net框架4.7.1中运行这个脚本。如果我在另一台机器上使用PowerShell V5.1执行相同的脚本,我可以成功地连接到Microsoft365ExchangeOnline。我尝试了一个更低的版本(ExchangeOnlineManagement 1.0.1),但是这个版本没有这些参数(组织、AppId等),我现在使用的是2.0.3版本。我不确定您是否可以将Powershell升级到5.1。
有人知道我为什么不能在线交换吗?
发布于 2021-10-25 16:46:00
EXO V2是仅支持PowerShell 5.1及更高版本。如果您想使用PowerShell 4.0 您必须使用EXO V1。
我对EXO模块还不太熟悉,不知道如何或是否可以在当前环境中使用EXO V1。如果现代Exchange管理需要V2,那么您将需要升级节点以使用WMF5.1或安装PowerShell Core (7+),并在那里使用EXO V2。
Windows与PowerShell PowerShell并行安装,因此如果您使用此路径,那么影响其他代码的风险就更小了,这需要PowerShell 4.0。
发布于 2022-05-05 12:15:22
我一直在努力解决这个问题,我终于找到了解决办法。
结果表明,在运行Import-Module ExchangeOnlineManagement之前,Connect-ExchangeOnline会导致此错误。
删除Import-Module ExchangeOnlineManagement就足以允许Connect-ExchangeOnline在没有New: Index超出范围错误的情况下进行连接
发布于 2021-10-31 23:06:14
我使用的是WindowsWindows5.1,这似乎是PowerShell版本2.0.4中引入的一个问题。
把评级降到2.0.3对我很有帮助。
https://stackoverflow.com/questions/69711543
复制相似问题