Move Local Exchange Mailboxes To Exchange Online Using PowerShell

In this blog post, I will show you how to move local on-premises Exchange mailboxes to Exchange Online using PowerShell.

This process is very handy if you need to automate the move process in a hybrid configuration using a daily task.


You need to run this script from the local Exchange PowerShell console and not from Exchange online.


below, is the CSV format you will need to use to add your mailboxes.



Below, is the PowerShell script you will need to run, make sure you fill in the details of your Exchange and Exchange Online services.

$localexchangeadmin = Get-Credential -Credential "adminusername"
$hybridserver = "servername"
$remotedomain ""

Import-Csv .\newmailboxes.csv | `
foreach { New-MoveRequest -Identity $_.emailaddress  -Remote -RemoteHostName $hybridserver`
-TargetDeliveryDomain $remotedomain`
-RemoteCredential $localexchangeadmin  -BadItemLimit 1000 }

To fully automate the process you can use the following script to find and export newly created mailbox to a CSV file and use it to move the mailboxes to Exchange Online.