Key Takeaways
- The Get-MigrationBatch cmdlet is used to retrieve information about one or more migration batches in Exchange Online or on-premises Exchange servers configured for hybrid deployments
- Get-MigrationBatch requires the Migration Administrator role or higher permissions to execute successfully in Exchange Online PowerShell
- The cmdlet supports filtering migration batches by status such as Creating, Initializing, Syncing, or Completed using the -Filter parameter with OPath syntax
- The Identity parameter accepts batch GUIDs, names, or wildcards for Get-MigrationBatch
- -Filter parameter uses OPath filters like 'Status -eq "Synced"' for precise querying
- -IncludeReport switch expands output to include BadItemsEncounteredCount per mailbox
- The Identity property uniquely identifies batches as GUID strings
- Status property values include Queued, InProgress, Completed, Failed, Synced
- TotalMailboxCount indicates the total number of mailboxes targeted in the batch
- Example: Get-MigrationBatch | Select Identity,Status,TotalMailboxCount retrieves key metrics
- To list failed batches: Get-MigrationBatch -Filter 'FailedMailboxCount -gt 0' | Format-Table Identity,FailedMailboxCount
- Detailed report: Get-MigrationBatch 'Batch1' -IncludeReport | Format-List Report
- Throttling delays occur if querying more than 100 batches rapidly; implement Start-Sleep 1 between calls
- Error 'The term Get-MigrationBatch is not recognized' indicates missing ExchangeOnlineManagement module; run Install-Module ExchangeOnlineManagement
- Filter syntax errors like invalid property names return A parameter cannot be found; validate with Get-MigrationBatch | Get-Member
This blog post explains how to use Get-MigrationBatch for managing Exchange mailbox migrations.






