Jul 24 2023 12:22 AM
Previously I'm able to run this command to mass change email domain via powershell:
------------------------------------------------------------------------------------------------------
Import-CSV C:\temp\MigrateOld2NewDomain.csv | % {
Set-Mailbox $_.ExistDomain -WindowsEmailAddress $_.NewDomain -MicrosoftOnlineServicesID $_.NewDomain
}
------------------------------------------------------------------------------------------------------
But today when i run it, encounter error:
------------------------------------------------------------------------------------------------------
Set-Mailbox : The term 'Set-Mailbox' 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.
-------------------------------------------------------------------------------------------------------
I connected to Connect-ExchangeOnline, and seems to have issue connect to remote server (not sure whether this is the cause on why the script fail)
-------------------------------------------------------------------------------------------------------
PS C:\WINDOWS\system32> Connect-ExchangeOnline
----------------------------------------------------------------------------
The module allows access to all existing remote PowerShell (V1) cmdlets in addition to the 9 new, faster, and more reliable cmdlets.
|--------------------------------------------------------------------------|
| Old Cmdlets | New/Reliable/Faster Cmdlets |
|--------------------------------------------------------------------------|
| Get-CASMailbox | Get-EXOCASMailbox |
| Get-Mailbox | Get-EXOMailbox |
| Get-MailboxFolderPermission | Get-EXOMailboxFolderPermission |
| Get-MailboxFolderStatistics | Get-EXOMailboxFolderStatistics |
| Get-MailboxPermission | Get-EXOMailboxPermission |
| Get-MailboxStatistics | Get-EXOMailboxStatistics |
| Get-MobileDeviceStatistics | Get-EXOMobileDeviceStatistics |
| Get-Recipient | Get-EXORecipient |
| Get-RecipientPermission | Get-EXORecipientPermission |
|--------------------------------------------------------------------------|
To get additional information, run: Get-Help Connect-ExchangeOnline or check https://aka.ms/exops-docs
Send your product improvement suggestions and feedback to email address removed for privacy reasons. For issues related to the module, contact Microsoft support. Don't use the feedback alias for problems or support issues.
----------------------------------------------------------------------------
New-ExoPSSession : Connecting to remote server outlook.office365.com failed with the following error message : For more information, see the
about_Remote_Troubleshooting Help topic.
-------------------------------------------------------------------------------------------
Jul 24 2023 12:53 AM
Jul 24 2023 01:11 AM
As @Harm_Veenstra mentions, first ensure that your Exchange Online PowerShell module is upto date:
Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation
Update-Module -Name ExchangeOnlineManagement
Next would be to check/confirm that the account you're using has the relevant Exchange RBAC permissions:
Get-ManagementRole -Cmdlet Set-Mailbox
Get-ManagementRoleAssignment -RoleAssignee <userIdentity>
Jul 24 2023 02:34 AM
I've run the update as follow, but still encounter same error:
-----------------------------------------------------------------------------------------------------
PS C:\WINDOWS\system32> update-module ExchangeOnlineManagement
PS C:\WINDOWS\system32> Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation
Name : ExchangeOnlineManagement
Version : 3.2.0
InstalledLocation : C:\Program Files\WindowsPowerShell\Modules\ExchangeOnlineManagement\3.2.0
PS C:\WINDOWS\system32> C:\Users\admin\OneDrive - XYZ\O365 - Migrate from old to new domain.ps1
Set-Mailbox : The term 'Set-Mailbox' 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.
-----------------------------------------------------------------------------------------------------
Jul 24 2023 02:36 AM
Jul 24 2023 02:37 AM
Jul 24 2023 02:44 AM
Jul 24 2023 02:48 AM
Jul 24 2023 04:22 AM - edited Jul 24 2023 04:23 AM
As @Harm_Veenstra mentioned, you may have added 3.2.0 but it's clearly not being used. Version 2.0.5 is.
The only time I've seen a lower version of a module (I can't remember which module) take precedence over a later release - without being explicitly directed to do so - is when there was an x86 version installed. Because the x86 path is searched before the x64 path, this led to the older module being loaded instead of the newer module.
# This needs to be run with administrative privileges.
Uninstall-Module -Name ExchangeOnlineManagement -AllVersions -Force
# This needs to be run with administrative privileges.
Install-Module -Name ExchangeOnlineManagement -Scope AllUsers -Force
Get-Module -ListAvailable -Name ExchangeOnlineManagement
Separately, something did change on the service side that impacted 2.0.5, as I'd been running that module for around perhaps 18 months due to a bug in the 3.x modules which I had to re-investigate last Thursday, when 2.0.5 broke.
My gut feeling is that there's no going back to 2.0.5, so you really will need to get yourself onto the 3.x version of ExchangeOnlineManagement.
Cheers,
Lain
Jul 24 2023 06:51 PM
Jul 24 2023 10:03 PM
SolutionJul 24 2023 10:30 PM
Jul 24 2023 10:32 PM
Jul 24 2023 10:03 PM
Solution