With the release of Exchange Server 2013, Microsoft has introduced new commands in the Exchange Management Shell (EMS). These include New-MigrationBatch and New-MoveRequest PowerShell commands that can help the Exchange Server Admins to move mailboxes between on-premises Exchange Server and Exchange Online in a hybrid setup. Below, we will be discussing the differences between these two commands. We will also be discussing how to use New-MigrationBatch and New-MoveRequest PowerShell commands.
About New-MigrationBatch and New-MoveRequest Commands
The New-MigrationBatch and New-MoveRequest commands in PowerShell are used to move mailboxes from one Exchange Server to another, from one database to another in the same server, or to migrate Exchange mailboxes to Exchange Online. If you have to move several mailboxes at the same time, the migration batch command is ideal.
In the case of migrating to a newer version of Exchange Server, you need to make sure that the current Exchange Server and the new setup can coexist. It is best to check with your Microsoft vendor or Microsoft coexistence matrix before proceeding.
Though both commands are used for moving mailboxes, here are some differences between these commands based on certain factors:
Feature | New-MigrationBatch | New-Move Request |
Immediately starts the mailbox transfer | No | Yes |
Migration status report | Yes | No |
Exchange Server 2010 support | No | Yes |
Makes use of migration mailbox | Yes | No |
Executes if the mailbox is mounted | No | No |
Migrate public folders and disabled mailboxes | No | No |
Works with offline EDB files | No | No |
Available in Exchange Admin Center | Yes | No |
How to Use the New-MoveRequest Command?
To move a mailbox from one database to another, you can use the command as given below.
New-MoveRequest "email address" -TargetDatabase "database name"

If you like to move the user archive to another database, use the command as given below.
New-MoveRequest "email address" -TargetDatabase "database name" -ArchiveTargetDatabase "database name"

To move the mailbox only and leave the archive as it is, use the below command.

To move the archive only and leave the mailbox as it is, use the below command.
New-MoveRequest "email address" -TargetDatabase "database name" -ArchiveOnly

How to Use the New-MigrationBatch Command?
You need to specify the name of the batch and the CSV file which has the mailboxes to move. After creating the batch, you need to start it.
New-MigrationBatch -Local -Name "name of batch" -CSVData ([System.IO.File]::ReadAllBytes("path to csv file")) -TargetDatabases "destination database name"

Start-MigrationBatch -Identity "name of batch"

Alternative Solution to Move Mailboxes
The above commands work fine when you have a good setup and everything is working well. However, they lack on part of reporting. Also, if something happens, there is no continuation and you need expertise and resources to resolve the issue. In addition, if something happens to the Exchange Server due to server or operating system failure, you will not be able to use these commands to move your data.
In such situations, you can look for a third-party Exchange migration tool. One of the best applications for moving mailboxes is Stellar Migrator for Exchange. With this application, you can migrate mailboxes seamlessly between different Exchange Servers without size limitations and with minimal configuration.
You can browse, select, and migrate mailboxes or specific items such as emails, calendars, contacts, tasks, and journals. The tool also supports direct migration to a live Exchange Server database or to an Office 365/Microsoft 365 tenant. You can move user mailboxes, archives, shared mailboxes, disabled mailboxes, and even public folders with ease.
Conclusion
As you have seen, New-MigrationBatch and New-MoveRequest are powerful commands, but they require expertise and a properly running Exchange Server environment. These methods will not work in case of server failure or when migrating from an old or decommissioned Exchange Server. In such cases, you can use Stellar Migrator for Exchange to move mailboxes directly from the source to the destination Exchange Server or to Office 365. With this application, you can significantly reduce migration time, complexity, and resource requirements.