Forum Discussion
KathyROI
Aug 02, 2022Brass Contributor
Error 'Index was out of range. Must be non-negative and less than the size of the collection.'
I have version 2.0.6 of module ExchangeOnlineManagement installed and I am using WindowsPowerShell 5.1. I issue the following connect statement inside a script: Connect-ExchangeOnline -AppId <a...
- Aug 03, 2022
You can find a bit of running commentary about the issue here but since it's an error internal to the Connect-ExchangeOnline commandlet, there's little you can do about it directly yourself:
powershell - New-ExoPSSession: Index was out of range - Stack Overflow
I'd try the suggestion from the user "az1d" and explicitly load the module first before calling Connect-ExchangeOnline as that fits the description you've provided below where when you run the same command a second time, it works. This is because the first time you called it, it would have resulted in the implicit loading of the module first.
So, try this from a brand new PowerShell window where you haven't loaded or run anything yet:
Import-Module -Name ExchangeOnlineManagement; Connect-ExchangeOnline -Organization <blah> -AppId <blee> -CertificateThumbprint <blech>;
Cheers,
Lain
KathyROI
Aug 03, 2022Brass Contributor
Hi LainRobertson ,
I do have the Import-Module statement preceding the connect statement in my script. The article you pointed me too suggests that you should NOT execute the Import statement so I will give that a try!
Uninstall 2.0.6 version isn't working for me. Can I simply delete the 2.0.6 folder to uninstall that version? I might just keep it as someone suggested in that other article the out of range issue was introduced in 2.0.4.
LainRobertson
Aug 03, 2022Silver Contributor
Hey, Kathy.
Good catch on the Stackoverflow article - I need my glasses checked. (Or just read things properly.)
I'm not sure about deleting the files as I've never had an issue removing a module. What error did you get?
If you run the following and Path begins with "C:\Program Files\WindowsPowerShell\Modules\" then you will need to run Uninstall-Module with local admin rights.
(Get-Module -Name ExchangeOnlineManagement).Path
Purely for comparison, I've been on 2.0.4 for a little while now and not had this error. That said, I only have the need to run it manually and always run the Import-Module first (just a habit I have.)
Cheers,
Lain
- KathyROIAug 04, 2022Brass Contributor
Hi LainRobertson ,
I am running WindowsPowerShell as admin. When I run:
uninstall-module -name exchangeonlinemanagement -force
I get the following error:
PackageManagement\Uninstall-Package : The module 'ExchangeOnlineManagement' of version '2.0.6-Preview6' in module
base folder 'HIDDEN\PowerShell\Modules\ExchangeOnlineManagement\2.0.6' was
installed without side-by-side version support. Some versions are installed in this module base with side-by-side
version support. Uninstall other versions of this module before uninstalling the most current version.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:2194 char:21
+ ... $null = PackageManagement\Uninstall-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Microsoft.Power...ninstallPackage:UninstallPackage) [Uninstall-P
ackage], Exception
+ FullyQualifiedErrorId : UnableToUninstallModuleVersion,Uninstall-Package,Microsoft.PowerShell.PackageManage
ment.Cmdlets.UninstallPackageI also tried to uninstall in PowerShell7 running as admin. It appears like it worked but it is still installed.
I have been running PowerShell7 on and off with my scripts to discover what does and does not work. Not quite prime time for me yet!
- KathyROIAug 04, 2022Brass ContributorAnd I forgot to mention that removing the Import did seem to fix the issue!
Doesn't really make sense to me, thought most of the time you need to import the module before using commands. I'll just keep version 6 installed.- LainRobertsonAug 04, 2022Silver Contributor
Yeah, I'm with you on the "doesn't make sense" part.
The Uninstall-Module error seems to indicate that the earlier versions of the module should be removed first. For the sake of simplicity, I tend to just "wipe the slate clean" using -AllVersions (I can be lazy like that), and then use Install-Module to put only the latest version back.
Here's some more in-depth discussion around pre-release modules as well as some specific content under "Examples" outlining how "side-by-side" support is intended to work.
Prerelease Module Versions - PowerShell | Microsoft Docs
Cheers,
Lain