New-MigrationBatch

This cmdlet is available in on-premises Exchange and in the cloud-based service. Some parameters and settings may be exclusive to one environment or the other. Use the New-MigrationBatch cmdlet to submit a new migration request for a batch of users. You use this cmdlet to: For information about the parameter sets in the Syntax section below, see Exchange cmdlet syntax (https://technet.microsoft.com/library/bb123552.aspx).

Syntax

New-MigrationBatch
   [-Local]
   -Name <String>
   [-AllowIncrementalSyncs <$true | $false>]
   [-AllowUnknownColumnsInCsv <$true | $false>]
   [-ArchiveOnly]
   [-AutoComplete]
   [-AutoRetryCount <Int32>]
   [-AutoStart]
   [-BadItemLimit <Unlimited>]
   [-CompleteAfter <DateTime>]
   [-Confirm]
   -CSVData <Byte[]>
   [-DisallowExistingUsers]
   [-DomainController <Fqdn>]
   [-Locale <CultureInfo>]
   [-NotificationEmails <MultiValuedProperty>]
   [-PrimaryOnly]
   [-ReportInterval <TimeSpan>]
   [-SkipSteps <SkippableMigrationSteps[]>]
   [-StartAfter <DateTime>]
   [-TargetArchiveDatabases <MultiValuedProperty>]
   [-TargetDatabases <MultiValuedProperty>]
   [-TimeZone <ExTimeZoneValue>]
   [-WhatIf]
   [-MoveOptions <MultiValuedProperty>]
   [-Partition <MailboxIdParameter>]
   [-SkipMoving <MultiValuedProperty>]
   [-SkipReports]
   [-WorkflowControlFlags <None | InjectAndForget | SkipSwitchover>]
   [-WorkloadType <None | Local | Onboarding | Offboarding | TenantUpgrade | LoadBalancing | Emergency | RemotePstIngestion | SyncAggregation | RemotePstExport | XO1Migration | CrossResourceForest | ShadowSync | XrmSharing | ThirdPartyContactSync>]
   [<CommonParameters>]
New-MigrationBatch
   -Name <String>
   -SourcePublicFolderDatabase <DatabaseIdParameter>
   [-AllowIncrementalSyncs <$true | $false>]
   [-AllowUnknownColumnsInCsv <$true | $false>]
   [-AutoComplete]
   [-AutoRetryCount <Int32>]
   [-AutoStart]
   [-BadItemLimit <Unlimited>]
   [-CompleteAfter <DateTime>]
   [-Confirm]
   -CSVData <Byte[]>
   [-DomainController <Fqdn>]
   [-LargeItemLimit <Unlimited>]
   [-Locale <CultureInfo>]
   [-NotificationEmails <MultiValuedProperty>]
   [-ReportInterval <TimeSpan>]
   [-SkipSteps <SkippableMigrationSteps[]>]
   [-StartAfter <DateTime>]
   [-TimeZone <ExTimeZoneValue>]
   [-WhatIf]
   [-Partition <MailboxIdParameter>]
   [-SkipMerging <MultiValuedProperty>]
   [-SkipReports]
   [<CommonParameters>]
New-MigrationBatch
   [-UserIds] <MultiValuedProperty>
   -Name <String>
   [-AllowIncrementalSyncs <$true | $false>]
   [-AllowUnknownColumnsInCsv <$true | $false>]
   [-AutoComplete]
   [-AutoRetryCount <Int32>]
   [-AutoStart]
   [-CompleteAfter <DateTime>]
   [-Confirm]
   [-DisableOnCopy]
   [-DomainController <Fqdn>]
   [-Locale <CultureInfo>]
   [-NotificationEmails <MultiValuedProperty>]
   [-ReportInterval <TimeSpan>]
   [-SkipSteps <SkippableMigrationSteps[]>]
   [-StartAfter <DateTime>]
   [-TimeZone <ExTimeZoneValue>]
   [-WhatIf]
   [-BadItemLimit <Unlimited>]
   -CSVData <Byte[]>
   [-Partition <MailboxIdParameter>]
   [-SkipMerging <MultiValuedProperty>]
   [-SkipReports]
   [-TargetDatabases <MultiValuedProperty>]
   [-WorkflowControlFlags <None | InjectAndForget | SkipSwitchover>]
   [<CommonParameters>]
New-MigrationBatch
   [-Users] <MultiValuedProperty>
   -Name <String>
   [-AllowIncrementalSyncs <$true | $false>]
   [-AllowUnknownColumnsInCsv <$true | $false>]
   [-AutoComplete]
   [-AutoRetryCount <Int32>]
   [-AutoStart]
   [-CompleteAfter <DateTime>]
   [-Confirm]
   [-DisableOnCopy]
   [-DomainController <Fqdn>]
   [-Locale <CultureInfo>]
   [-NotificationEmails <MultiValuedProperty>]
   [-ReportInterval <TimeSpan>]
   [-SkipSteps <SkippableMigrationSteps[]>]
   [-StartAfter <DateTime>]
   [-TimeZone <ExTimeZoneValue>]
   [-WhatIf]
   -CSVData <Byte[]>
   [-Partition <MailboxIdParameter>]
   [-SkipReports]
   [-TargetDatabases <MultiValuedProperty>]
   [<CommonParameters>]
New-MigrationBatch
   -Name <String>
   [-AllowIncrementalSyncs <$true | $false>]
   [-AllowUnknownColumnsInCsv <$true | $false>]
   [-ArchiveOnly]
   [-AutoComplete]
   [-AutoRetryCount <Int32>]
   [-AutoStart]
   [-BadItemLimit <Unlimited>]
   [-CompleteAfter <DateTime>]
   [-Confirm]
   [-CSVData <Byte[]>]
   [-DisallowExistingUsers]
   [-DomainController <Fqdn>]
   [-ExcludeFolders <MultiValuedProperty>]
   [-LargeItemLimit <Unlimited>]
   [-Locale <CultureInfo>]
   [-NotificationEmails <MultiValuedProperty>]
   [-PrimaryOnly]
   [-ReportInterval <TimeSpan>]
   [-SkipSteps <SkippableMigrationSteps[]>]
   [-SourceEndpoint <MigrationEndpointIdParameter>]
   [-StartAfter <DateTime>]
   [-TargetArchiveDatabases <MultiValuedProperty>]
   [-TargetDatabases <MultiValuedProperty>]
   [-TargetDeliveryDomain <String>]
   [-TimeZone <ExTimeZoneValue>]
   [-WhatIf]
   [-MoveOptions <MultiValuedProperty>]
   [-Partition <MailboxIdParameter>]
   [-SkipMerging <MultiValuedProperty>]
   [-SkipMoving <MultiValuedProperty>]
   [-SkipReports]
   [-WorkflowControlFlags <None | InjectAndForget | SkipSwitchover>]
   [<CommonParameters>]
New-MigrationBatch
   -Name <String>
   [-AllowIncrementalSyncs <$true | $false>]
   [-AllowUnknownColumnsInCsv <$true | $false>]
   [-ArchiveOnly]
   [-AutoComplete]
   [-AutoRetryCount <Int32>]
   [-AutoStart]
   [-BadItemLimit <Unlimited>]
   [-CompleteAfter <DateTime>]
   [-Confirm]
   -CSVData <Byte[]>
   [-DisallowExistingUsers]
   [-DomainController <Fqdn>]
   [-LargeItemLimit <Unlimited>]
   [-Locale <CultureInfo>]
   [-NotificationEmails <MultiValuedProperty>]
   [-PrimaryOnly]
   [-ReportInterval <TimeSpan>]
   [-SkipSteps <SkippableMigrationSteps[]>]
   [-StartAfter <DateTime>]
   [-TargetArchiveDatabases <MultiValuedProperty>]
   [-TargetDatabases <MultiValuedProperty>]
   [-TargetDeliveryDomain <String>]
   [-TargetEndpoint <MigrationEndpointIdParameter>]
   [-TimeZone <ExTimeZoneValue>]
   [-WhatIf]
   [-MoveOptions <MultiValuedProperty>]
   [-Partition <MailboxIdParameter>]
   [-SkipMerging <MultiValuedProperty>]
   [-SkipMoving <MultiValuedProperty>]
   [-SkipReports]
   [<CommonParameters>]
New-MigrationBatch
   -Name <String>
   [-AllowIncrementalSyncs <$true | $false>]
   [-AllowUnknownColumnsInCsv <$true | $false>]
   [-AutoComplete]
   [-AutoRetryCount <Int32>]
   [-AutoStart]
   [-CompleteAfter <DateTime>]
   [-Confirm]
   -CSVData <Byte[]>
   [-DomainController <Fqdn>]
   [-Locale <CultureInfo>]
   [-NotificationEmails <MultiValuedProperty>]
   [-ReportInterval <TimeSpan>]
   [-SkipSteps <SkippableMigrationSteps[]>]
   [-StartAfter <DateTime>]
   [-TimeZone <ExTimeZoneValue>]
   [-WhatIf]
   [-PublicFolderToUnifiedGroup]
   [-BadItemLimit <Unlimited>]
   [-LargeItemLimit <Unlimited>]
   [-Partition <MailboxIdParameter>]
   [-SkipReports]
   [-SourceEndpoint <MigrationEndpointIdParameter>]
   [<CommonParameters>]
New-MigrationBatch
   [-UserIds] <MultiValuedProperty>
   -Name <String>
   [-AllowIncrementalSyncs <$true | $false>]
   [-AllowUnknownColumnsInCsv <$true | $false>]
   [-AutoComplete]
   [-AutoRetryCount <Int32>]
   [-AutoStart]
   [-CompleteAfter <DateTime>]
   [-Confirm]
   [-DisableOnCopy]
   [-DomainController <Fqdn>]
   [-Locale <CultureInfo>]
   [-NotificationEmails <MultiValuedProperty>]
   [-Partition <MailboxIdParameter>]
   [-ReportInterval <TimeSpan>]
   [-SkipReports]
   [-SkipSteps <SkippableMigrationSteps[]>]
   [-StartAfter <DateTime>]
   [-TimeZone <ExTimeZoneValue>]
   [-WhatIf]
   [<CommonParameters>]
New-MigrationBatch
   [-Users] <MultiValuedProperty>
   -Name <String>
   [-AllowIncrementalSyncs <$true | $false>]
   [-AllowUnknownColumnsInCsv <$true | $false>]
   [-AutoComplete]
   [-AutoRetryCount <Int32>]
   [-AutoStart]
   [-CompleteAfter <DateTime>]
   [-Confirm]
   [-DisableOnCopy]
   [-DomainController <Fqdn>]
   [-Locale <CultureInfo>]
   [-NotificationEmails <MultiValuedProperty>]
   [-Partition <MailboxIdParameter>]
   [-ReportInterval <TimeSpan>]
   [-SkipReports]
   [-SkipSteps <SkippableMigrationSteps[]>]
   [-StartAfter <DateTime>]
   [-TimeZone <ExTimeZoneValue>]
   [-WhatIf]
   [<CommonParameters>]
New-MigrationBatch
   -Name <String>
   [-AllowIncrementalSyncs <$true | $false>]
   [-AllowUnknownColumnsInCsv <$true | $false>]
   [-AutoComplete]
   [-AutoRetryCount <Int32>]
   [-AutoStart]
   [-CompleteAfter <DateTime>]
   [-Confirm]
   [-DomainController <Fqdn>]
   [-Locale <CultureInfo>]
   [-NotificationEmails <MultiValuedProperty>]
   [-Partition <MailboxIdParameter>]
   [-ReportInterval <TimeSpan>]
   [-SkipReports]
   [-SkipSteps <SkippableMigrationSteps[]>]
   [-StartAfter <DateTime>]
   [-TimeZone <ExTimeZoneValue>]
   [-WhatIf]
   [-WorkflowTemplate <String>]
   [<CommonParameters>]

Description

Use the New-MigrationBatch cmdlet to create a migration batch to migrate mailboxes and mailbox data in one of the following migration scenarios.

Moves in on-premises Exchange organizations

  • Local move: A local move is where you move mailboxes from one mailbox database to another. A local move occurs within a single forest. For more information, see Example 1.

  • Cross-forest enterprise move: In a cross-forest enterprise move, mailboxes are moved to a different forest. Cross-forest moves are initiated either from the target forest, which is the forest that you want to move the mailboxes to, or from the source forest, which is the forest that currently hosts the mailboxes. For more information, see Example 2.

Onboarding and offboarding in Exchange Online

  • Onboarding remote move migration: In a hybrid deployment, you can move mailboxes from an on-premises Exchange organization to Exchange Online. This is also known as an onboarding remote move migration because you on-board mailboxes to Exchange Online. For more information, see Example 3.

  • Offboarding remote move migration: You can also perform an offboarding remote move migration, where you migrate Exchange Online mailboxes to your on-premises Exchange organization. For more information, see Example 4.

    Both onboarding and offboarding remote move migrations are initiated from your Exchange Online organization.

  • Cutover Exchange migration: This is another type of onboarding migration and is used to migrate all mailboxes in an on-premises Exchange organization to Exchange Online. You can migrate a maximum of 1,000 Exchange Server 2003, Exchange Server 2007, or Exchange Server 2010 mailboxes using a cutover migration. Mailboxes will be automatically provisioned in Exchange Online when you perform a cutover Exchange migration. For more information, see Example 5.

  • Staged Exchange migration: You can also migrate a subset of mailboxes from an on-premises Exchange organization to Exchange Online. This is another type of onboarding migration. Migrating mailboxes from Exchange 2010 or later versions of Exchange isn't supported using a staged migration. Prior to running a staged migration, you have to use directory synchronization or some other method to provision mail users in your Exchange Online organization. For more information, see Example 6.

  • IMAP migration: This onboarding migration type migrates mailbox data from an IMAP server (including Exchange) to Exchange Online. For an IMAP migration, you must first provision mailboxes in Exchange Online before you can migrate mailbox data. For more information, see Example 7.

You need to be assigned permissions before you can run this cmdlet. Although this topic lists all parameters for the cmdlet, you may not have access to some parameters if they're not included in the permissions assigned to you. To find the permissions required to run any cmdlet or parameter in your organization, see Find the permissions required to run any Exchange cmdlet (https://technet.microsoft.com/library/mt432940.aspx).

Examples

-------------------------- Example 1 --------------------------

New-MigrationBatch -Local -Name LocalMove1 -CSVData ([System.IO.File]::ReadAllBytes("C:\Users\Administrator\Desktop\LocalMove1.csv")) -TargetDatabases MBXDB2; Start-MigrationBatch -Identity LocalMove1

This example creates a migration batch for a local move, where the mailboxes in the specified CSV file are moved to a different mailbox database. This CSV file contains a single column with the email address for the mailboxes that will be moved. The header for this column must be named EmailAddress. The migration batch in this example must be started manually by using the Start-MigrationBatch cmdlet or the Exchange admin center. Alternatively, you can use the AutoStart parameter to start the migration batch automatically.

-------------------------- Example 2 --------------------------

$Credentials = Get-Credential; $MigrationEndpointSource = New-MigrationEndpoint -ExchangeRemoteMove -Name Forest1Endpoint -Autodiscover -EmailAddress administrator@forest1.contoso.com -Credentials $Credentials; $CrossForestBatch = New-MigrationBatch -Name CrossForestBatch1 -SourceEndpoint $MigrationEndpointSource.Identity -TargetDeliveryDomain forest2.contoso.com -TargetDatabases MBXDB1 -CSVData ([System.IO.File]::ReadAllBytes("C:\Users\Administrator\Desktop\CrossForestBatch1.csv")); Start-MigrationBatch -Identity $CrossForestBatch.Identity

This example creates a migration batch for a cross-forest enterprise move, where the mailboxes for the mail users specified in the CSV file are moved to a different forest. A new migration endpoint is created, which identifies the domain where the mailboxes are currently located. The endpoint is used to create the migration batch. Then the migration batch is started with the Start-MigrationBatch cmdlet. Note that cross-forest moves are initiated from the target forest, which is the forest that you want to move the mailboxes to.

-------------------------- Example 3 --------------------------

$Credentials = Get-Credential; $MigrationEndpointOnPrem = New-MigrationEndpoint -ExchangeRemoteMove -Name OnpremEndpoint -Autodiscover -EmailAddress administrator@onprem.contoso.com -Credentials $Credentials; $OnboardingBatch = New-MigrationBatch -Name RemoteOnBoarding1 -SourceEndpoint $MigrationEndpointOnprem.Identity -TargetDeliveryDomain cloud.contoso.com -CSVData ([System.IO.File]::ReadAllBytes("C:\Users\Administrator\Desktop\RemoteOnBoarding1.csv")); Start-MigrationBatch -Identity $OnboardingBatch.Identity

This example creates a migration batch for an onboarding remote move migration from an on-premises Exchange organization to Exchange Online. The syntax is similar to that of a cross-forest move, but it's initiated from the Exchange Online organization. A new migration endpoint is created, which points to the on-premises organization as the source location of the mailboxes that will be migrated. This endpoint is used to create the migration batch. Then the migration batch is started with the Start-MigrationBatch cmdlet.

-------------------------- Example 4 --------------------------

$Credentials = Get-Credential; $MigrationEndpointOnPrem = New-MigrationEndpoint -ExchangeRemoteMove -Name OnpremEndpoint -Autodiscover -EmailAddress administrator@onprem.contoso.com -Credentials $Credentials; $OffboardingBatch = New-MigrationBatch -Name RemoteOffBoarding1 -TargetEndpoint $MigrationEndpointOnprem.Identity -TargetDeliveryDomain onprem.contoso.com -TargetDatabases @(MBXDB01,MBXDB02,MBXDB03) -CSVData ([System.IO.File]::ReadAllBytes("C:\Users\Administrator\Desktop\RemoteOffBoarding1.csv")); Start-MigrationBatch -Identity $OffboardingBatch.Identity

This example creates a migration batch for an offboarding remote move migration from Exchange Online to an on-premises Exchange organization. Like an onboarding remote move, it's initiated from the Exchange Online organization. First a Migration Endpoint is created that contains information about how to connect to the on-premises organization. The endpoint is used as the TargetEndpoint when creating the migration batch, which is then started with the Start-MigrationBatch cmdlet. The TargetDatabases parameter specifies multiple on-premises databases that the migration service can select as the target database to move the mailbox to.

-------------------------- Example 5 --------------------------

$credentials = Get-Credential; $SourceEndpoint = New-MigrationEndpoint -ExchangeOutlookAnywhere -Autodiscover -Name SourceEndpoint -EmailAddress administrator@contoso.com -Credentials $credentials; New-MigrationBatch -Name CutoverBatch -SourceEndpoint $SourceEndpoint.Identity -TimeZone "Pacific Standard Time" -AutoStart

This example creates a migration batch for the cutover Exchange migration CutoverBatch that's automatically started. The example obtains the connection settings to the on-premises Exchange server, and then uses those connection settings to create a migration endpoint. The endpoint is then used to create the migration batch. This example also includes the optional TimeZone parameter.

-------------------------- Example 6 --------------------------

$Credentials = Get-Credential; $MigrationEndpoint = New-MigrationEndpoint -ExchangeOutlookAnywhere -Name ContosoEndpoint -Autodiscover -EmailAddress administrator@contoso.com -Credentials $Credentials; $StagedBatch1 = New-MigrationBatch -Name StagedBatch1 -SourceEndpoint $MigrationEndpoint.Identity -CSVData ([System.IO.File]::ReadAllBytes("C:\Users\Administrator\Desktop\StagedBatch1.csv")); Start-MigrationBatch -Identity $StagedBatch1.Identity

This example creates and starts a migration batch for a staged Exchange migration. The example uses the New-MigrationEndpoint cmdlet to create a migration endpoint for the on-premises Exchange server, and then uses that endpoint to create the migration batch. The migration batch is started with the Start-MigrationBatch cmdlet.

-------------------------- Example 7 --------------------------

New-MigrationEndpoint -IMAP -Name IMAPEndpoint1 -RemoteServer imap.contoso.com -Port 993; New-MigrationBatch -Name IMAPbatch1 -CSVData ([System.IO.File]::ReadAllBytes("C:\Users\Administrator\Desktop\IMAPmigration_1.csv")) -SourceEndpoint IMAPEndpoint1 -ExcludeFolders "Deleted Items","Junk Email"

This example creates a migration endpoint for the connection settings to the IMAP server. Then an IMAP migration batch is created that uses the CSV migration file IMAPmigration_1.csv and excludes the contents of the Deleted Items and Junk Email folders. This migration batch is pending until it's started with the Start-MigrationBatch cmdlet.

Required Parameters

-CSVData

The CSVData parameter specifies the CSV file that contains information about the user mailboxes to be moved or migrated. The required attributes in the header row of the CSV file vary depending on the type of migration. For more information, see CSV files for mailbox migration (https://technet.microsoft.com/library/dn170437.aspx).

Use the following format for the value of this parameter: ([System.IO.File]::ReadAllBytes(<path of the CSV migration file>)). For example: -CSVData ([System.IO.File]::ReadAllBytes("C:\Users\Administrator\Desktop\MigrationBatch_1.csv"))

Type:Byte[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-Local

This parameter is available only in on-premises Exchange.

The Local switch specifies a local move (mailboxes are moved to a different mailbox database in the same Active Directoryforest). You don't need to specify a value with this switch.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016
-Name

The Name parameter specifies an unique name for the migration batch. The maximum length is 64 characters. If the value contains spaces, enclose the value in quotation marks.

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-PublicFolderToUnifiedGroup

The PublicFolderToUnifiedGroup switch specifies a migration from public folders to Office 365 groups. You don't need to specify a value with this switch.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2016, Exchange Online
-SourcePublicFolderDatabase

This parameter is available only in on-premises Exchange.

The SourcePublicFolderDatabase parameter specifies the name of the source public folder database that's used in a public folder migration.

Type:DatabaseIdParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016
-UserIds

The UserIds parameter specifies the users that you want to copy from an existing migration batch (for example, if a previous migration was partially successful). You identify a user by email address or by their Guid property value from the Get-MigrationUser cmdlet. You can specify multiple users separated by commas.

The users that you specify for this parameter must be defined in an existing migration batch.

To disable the migration of the users in the original migration batch, use the DisableOnCopy switch with this parameter.

Type:MultiValuedProperty
Position:1
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-Users

The Users parameter specifies the users that you want to copy from an existing migration batch (for example, if a previous migration was partially successful). You identify the users by using the Get-MigrationUser cmdlet. For example:

$Failed = Get-MigrationUser -Status Failed

New-MigrationBatch -Name "Retry Failed Users" -Users $Failed

The users that you specify for this parameter must be defined in an existing migration batch.

To disable the migration of the users in the original migration batch, use the DisableOnCopy switch with this parameter.

Type:MultiValuedProperty
Position:1
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online

Optional Parameters

-AllowIncrementalSyncs

The AllowIncrementalSyncs parameter specifies whether to enable or disable incremental synchronization. Valid values are:

  • $true: Incremental synchronization is enabled. Any new messages that are sent to the source mailbox are copied to the corresponding target mailbox once every 24 hours. This is the default value.

  • $false: Incremental synchronization is disabled. The migration batch will go into the Stopped state after the initial synchronization is complete. To complete a migration batch for local moves, cross-forest moves, or remote move migrations, you need to enable incremental synchronization by using the Set-MigrationBatch cmdlet.

Type:$true | $false
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-AllowUnknownColumnsInCsv

The AllowUnknownColumnsInCsv parameter specifies whether to allow extra columns in the CSV file that aren't used by migration. Valid values are:

  • $true: The migration ignores (silently skips) unknown columns in the CSV file (including optional columnswithmisspelledcolumn headers). All unknown columns are treated like extra columns that aren't used by migration.

  • $false: The migration fails if there are any unknown columns in the CSV file.This setting protects against spelling errors in column headers. This is the default value.

Type:$true | $false
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-ArchiveOnly

The ArchiveOnlyswitchspecifies that only archive mailboxes are migrated for the users in the migration batch (primary mailboxes aren't migrated). You don't need to specify a value with this switch.

You can only use this switch for local moves and remote move migrations.

You can use the TargetArchiveDatabases parameter to specify the database to migrate the archive mailboxes to. You can also specify the target archive database in the CSV file. If you don't specify the target archive database, the cmdlet uses the automatic mailbox distribution logic to select the database.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-AutoComplete

The AutoCompleteswitch forces the finalization of the individual mailboxes as soon as the mailbox has completed initial synchronization. You don't need to specify a value with this switch.

You can only use this switch for local moves and remote move migrations.

If you don't use this switch, you need to run the Complete-MigrationBatch cmdlet to finalize a migration batch.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-AutoRetryCount

The AutoRetryCount parameter specifies the number of attempts to restart the migration batch to migrate mailboxes that encountered errors.

Type:Int32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-AutoStart

The AutoStartswitch immediately starts the processing of the new migration batch. You don't need to specify a value with this switch.

If you don't use this switch, you need to manually start the migration batch by using the Start-MigrationBatch cmdlet.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-BadItemLimit

The BadItemLimit parameter specifies the maximum number of bad items that are allowed before the migration request fails. A bad item is a corrupt item in the source mailbox that can't be copied to the target mailbox. Also included in the bad item limit are missing items. Missing items are items in the source mailbox that can't be found in the target mailbox when the migration request is ready to complete.

Valid input for this parameter is an integer or the value unlimited. The default value is 0, which means the migration request will fail if any bad items are detected. If you are OK with leaving a few bad items behind, you can set this parameter to a reasonable value (we recommend 10 or lower) so the migration request can proceed. If too many bad items are detected, consider using the New-MailboxRepairRequest cmdlet to attempt to fix corrupted items in the source mailbox, and try the migration request again.

Type:Unlimited
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-CompleteAfter

The CompleteAfter parameter specifies a delay before the batch is completed. Data migration for the batch will start, but won't complete until the date/time you specify with this parameter.

Use the short date format that's defined in the Regional Options settings on the computer where you're running the command. For example, if the computer is configured to use the short date format mm/dd/yyyy, enter 09/01/2015 to specify September 1, 2015. You can enter the date only, or you can enter the date and time of day. If you enter the date and time of day, enclose the value in quotation marks ("), for example, "09/01/2015 5:00 PM".

In Exchange Online, if you specify a date/time value without a time zone, the value is in Coordinated Universal Time (UTC).

To specify a date/time value for this parameter, use either of the following options:

  • Specify the date/time value in UTC: For example, "2016-05-06 14:30:00z".

  • Specify the date/time value as a formula that converts the date/time in your local time zone to UTC: For example, (Get-Date "5/6/2016 9:30 AM").ToUniversalTime(). For more information, see Get-Date (https://go.microsoft.com/fwlink/p/?LinkID=113313).

This parameter should only be used in the cloud-based service.

Type:DateTime
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-Confirm

The Confirm switch specifies whether to show or hide the confirmation prompt. How this switch affects the cmdlet depends on if the cmdlet requires confirmation before proceeding.

  • Destructive cmdlets (for example, Remove-* cmdlets) have a built-in pause that forces you to acknowledge the command before proceeding. For these cmdlets, you can skip the confirmation prompt by using this exact syntax: -Confirm:$false.

  • Most other cmdlets (for example, New-* and Set-* cmdlets) don't have a built-in pause. For these cmdlets, specifying the Confirm switch without a value introduces a pause that forces you acknowledge the command before proceeding.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-DisableOnCopy

The DisableOnCopyswitch disables the original migration job item for a user if you're copying users from an existing batch to a new batch by using the UserIds or Users parameters.. You don't need to specify a value with this switch.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-DisallowExistingUsers

The DisallowExistingUsersswitch prevents the migration of mailboxes that are currently defined in a different migration batch. You don't need to specify a value with this switch.

A validation warning is displayed for any pre-existing mailbox in the target destination.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-DomainController

This parameter is available only in on-premises Exchange.

The DomainController parameter specifies the domain controller that's used by this cmdlet to read data from or write data to Active Directory. You identify the domain controller by its fully qualified domain name (FQDN). For example, dc01.contoso.com.

Type:Fqdn
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016
-ExcludeFolders

This parameter is available only in the cloud-based service.

For an IMAP migration, the ExcludeFolders parameter specifies mailbox folders that you don't want to migrate from the on-premises messaging system to the cloud-based mailboxes. Use folder names relative to the IMAP root on the on-premises mail server. Specify the value as a string array and separate multiple folder names with commas.

Type:MultiValuedProperty
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Online
-LargeItemLimit

The LargeItemLimit parameter specifies the maximum number of large items that are allowed before the migration request fails. A large item is a message in the source mailbox that exceeds the maximum message size that's allowed in the target mailbox. If the target mailbox doesn't have a specifically configured maximum message size value, the organization-wide value is used.

For more information about maximum message size values, see the following topics:

Valid input for this parameter is an integer or the value unlimited. The default value is 0, which means the migration request will fail if any large items are detected. If you are OK with leaving a few large items behind, you can set this parameter to a reasonable value (we recommend 10 or lower) so the migration request can proceed.

Type:Unlimited
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-Locale

This parameter is available only in on-premises Exchange.

The Locale parameter specifies the language for the migration batch.

Valid input for this parameter is a supported culture code value from the Microsoft .NET Framework CultureInfo class. For example, da-DK for Danish or ja-JP for Japanese. For more information, see CultureInfo Class (https://go.microsoft.com/fwlink/p/?linkId=184859).

Type:CultureInfo
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016
-MoveOptions

The MoveOptions parameter specifies the stages of the migration that you want to skip for debugging purposes. Don't use this parameter unless you're directed to do so by Microsoft Customer Service and Support or specific documentation.

Don't use this parameter with the SkipMoving parameter.

Type:MultiValuedProperty
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2016, Exchange Online
-NotificationEmails

The NotificationEmails parameter specifies one or more email addresses that migration status reports are sent to. Specify the value as a string array, and separate multiple email addresses with commas.

If you don't use this parameter, the status report isn't sent.

Type:MultiValuedProperty
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-Partition

This parameter is reserved for internal Microsoft use.

Type:MailboxIdParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2016, Exchange Online
-PrimaryOnly

The PrimaryOnly switch specifies that only primary mailboxes are migrated for the users in the migration batch that also have archive mailboxes (archive mailboxes aren't migrated). You don't need to specify a value with this switch.

You can only use this switch for local moves and remote move migrations.

Note : If the users don't have archive mailboxes, don't use this switch.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-ReportInterval

The ReportInterval parameter specifies how frequently emailed reports should be sent to the email addresses listed within NotificationEmails.

By default, emailed reports are sent every 24 hours for a batch. Setting this value to 0 indicates that reports should never be sent for this batch.

This parameter should only be used in the cloud-based service.

Type:TimeSpan
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-SkipMerging

The SkipMerging parameter specifies the stages of the migration that you want to skip for debugging purposes. Don't use this parameter unless you're directed to do so by Microsoft Customer Service and Support or specific documentation.

Type:MultiValuedProperty
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2016, Exchange Online
-SkipMoving

This parameter has been replaced by the MoveOptions parameter.

The SkipMoving parameter specifies the stages of the migration that you want to skip for debugging purposes. Don't use this parameter unless you're directed to do so by Microsoft Customer Service and Support or specific documentation.

Type:MultiValuedProperty
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2016, Exchange Online
-SkipReports

The SkipReports switch specifies that you want to skip automatic reporting for the migration. You don't need to specify a value with this switch.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2016, Exchange Online
-SkipSteps

The SkipSteps parameter specifies the steps in the staged Exchange migration that you want to skip. Valid values are:

  • None (This is the default value)

  • SettingTargetAddress: Don't set the target email address on the source mailbox. This setting prevents mail from being forwarded from the original mailbox to the new migrated mailbox.

This parameter is only enforced for staged Exchange migrations.

Type:SkippableMigrationSteps[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-SourceEndpoint

The SourceEndpoint parameter specifies the migration endpoint to use for the source of the migration batch. You create the migration endpoint by using the New-MigrationEndpoint cmdlet. You can use any value that uniquely identifies the migration endpoint. For example:

  • Name (the Identity property value)

  • GUID

This parameter defines the settings that are used to connect to the server where the source mailboxes are located.

Type:MigrationEndpointIdParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-StartAfter

The StartAfter parameter specifies a delay before the data migration for the users within the batch is started. The migration will be prepared, but the actual data migration for the user won't start until the date/time you specify with this parameter.

Use the short date format that's defined in the Regional Options settings on the computer where you're running the command. For example, if the computer is configured to use the short date format mm/dd/yyyy, enter 09/01/2015 to specify September 1, 2015. You can enter the date only, or you can enter the date and time of day. If you enter the date and time of day, enclose the value in quotation marks ("), for example, "09/01/2015 5:00 PM".

In Exchange Online, if you specify a date/time value without a time zone, the value is in Coordinated Universal Time (UTC).

To specify a date/time value for this parameter, use either of the following options:

  • Specify the date/time value in UTC: For example, "2016-05-06 14:30:00z".

  • Specify the date/time value as a formula that converts the date/time in your local time zone to UTC: For example, (Get-Date "5/6/2016 9:30 AM").ToUniversalTime(). For more information, see Get-Date (https://go.microsoft.com/fwlink/p/?LinkID=113313).

This parameter should only be used in the cloud-based service.

Type:DateTime
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-TargetArchiveDatabases

The TargetArchiveDatabases parameter specifies the database where the archive mailboxes specified in the migration batch will be migrated to.

You can also specify multiple databases for the value of this parameter. The migration service selects one database as the target database to move the archive mailbox to. For example: -TargetArchiveDatabases @(MBXDB01,MBXDB02,MBXDB03)

You can only use this parameter for local moves and remote move migrations.

Type:MultiValuedProperty
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-TargetDatabases

The TargetDatabases parameter specifies the identity of the database that you're moving mailboxes to. You can use the following values:

  • Database GUID

  • Database name

If you don't specify the TargetDatabases parameter for a local move, the cmdlet uses the automatic mailbox distribution logic to select the database.

You can also specify multiple databases for the value of this parameter. The migration service will select one as the target database to move the mailbox to. For example: -TargetDatabases @(MBXDB01,MBXDB02,MBXDB03)

You can only use this parameter for local moves and remote move migrations.

Type:MultiValuedProperty
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-TargetDeliveryDomain

The TargetDeliveryDomain parameter specifies the FQDN of the external email address created in the source forest for the mail-enabled user when the migration batch is complete.

This parameter is required for remote move onboarding and remote offboarding migration batches

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-TargetEndpoint

The TargetEndpoint parameter specifies the migration endpoint to use for the destination of the migration batch. You create the migration endpoint by using the New-MigrationEndpoint cmdlet. You can use any value that uniquely identifies the migration endpoint. For example:

  • Name (the Identity property value)

  • GUID

This parameter defines the settings that are used to connect to the destination server where the mailboxes will be moved.

Type:MigrationEndpointIdParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-TimeZone

The TimeZone parameter specifies the time zone of the administrator who submits the migration batch.

A valid value for this parameter is a supported time zone key name (for example, "Pacific Standard Time").

To see the available values, run the following command: $TimeZone = Get-ChildItem "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Time zones" | foreach {Get-ItemProperty $_.PSPath}; $TimeZone | sort Display | Format-Table -Auto PSChildname,Display

If the value contains spaces, enclose the value in quotation marks ("). The default value is the time zone setting of the Exchange server.

Type:ExTimeZoneValue
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-WhatIf

The WhatIf switch simulates the actions of the command. You can use this switch to view the changes that would occur without actually applying those changes. You don't need to specify a value with this switch.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Online
-WorkflowControlFlags

The WorkflowControlFlags parameter specifies advanced controls for the steps that are performed in the migration. Valid values are:

  • None (This is the default value)

  • InjectAndForget

  • SkipSwitchover

Don't use this parameter unless you're directed to do so by Microsoft Customer Service and Support or specific documentation.

Type:None | InjectAndForget | SkipSwitchover
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2016, Exchange Online
-WorkflowTemplate

The WorkflowControlFlags parameter specifies advanced controls for the steps that are performed in the migration. Don't use this parameter unless you're directed to do so by Microsoft Customer Service and Support or specific documentation.

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2016, Exchange Online
-WorkloadType

This parameter is reserved for internal Microsoft use.

Type:None | Local | Onboarding | Offboarding | TenantUpgrade | LoadBalancing | Emergency | RemotePstIngestion | SyncAggregation | RemotePstExport | XO1Migration | CrossResourceForest | ShadowSync | XrmSharing | ThirdPartyContactSync
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2016, Exchange Online

Inputs

To see the input types that this cmdlet accepts, see Cmdlet Input and Output Types (https://go.microsoft.com/fwlink/p/?linkId=616387). If the Input Type field for a cmdlet is blank, the cmdlet doesn't accept input data.

Outputs

To see the return types, which are also known as output types, that this cmdlet accepts, see Cmdlet Input and Output Types (https://go.microsoft.com/fwlink/p/?linkId=616387). If the Output Type field is blank, the cmdlet doesn't return data.