Forum Discussion

AnthonyChan_5ming's avatar
AnthonyChan_5ming
Copper Contributor
Jul 24, 2023

Change email domain in bulk via powershell

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.

-------------------------------------------------------------------------------------------

  • Harm_Veenstra's avatar
    Harm_Veenstra
    Jul 25, 2023
    You can stop and close powershell, remove C:\Users\adm_acch006350\Documents\WindowsPowerShell\Modules\ExchangeOnlineManagement\2.0.5 and try to install it again using nstall-module ExchangeOnlineManagement
  • kevkelly's avatar
    kevkelly
    Brass Contributor

    AnthonyChan_5ming 

     

    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

    https://learn.microsoft.com/en-us/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#update-the-exchange-online-powershell-module

     

    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>
    • AnthonyChan_5ming's avatar
      AnthonyChan_5ming
      Copper Contributor
      kevkelly
      Which module should I connect to run Get-ManagementRole?
      ----------------------------------------------------------------------------------------------
      Get-ManagementRole : The term 'Get-ManagementRole' 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 think you have to update your module. The information you get after connecting should show v3. Update by update-module ExchangeOnlineManagement , it should be version 3.2.0 afterward (Check your current version with get-module ExchangeOnlineManagement
    get-module ExchangeOnlineManagement

    ModuleType Version PreRelease Name ExportedCommands
    ---------- ------- ---------- ---- ----------------
    Script 3.2.0 ExchangeOnlineManagement {Add-VivaModuleFeaturePolicy, Get-ConnectionInfor…
    )

    • AnthonyChan_5ming's avatar
      AnthonyChan_5ming
      Copper Contributor

      Harm_Veenstra 

      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.

      -----------------------------------------------------------------------------------------------------

      • Harm_Veenstra's avatar
        Harm_Veenstra
        MVP
        Did you start a new session and rerun the Connect-ExchangeOnline cmdlet? Afterward, the Set-Mailbox cmdlet should be available

Resources