Site icon MxCloudPro

Mailbox Move CMDlets

move mailbox in exchange server

move mailbox from one DB to another DB

Exchange Mailbox Move PowerShell Commands

Move the user mailbox to Database DB01

New-MoveRequest -Identity ‘username@example.com’ -TargetDatabase “DB01”

New-MoveRequest -Identity ‘username@example.com’ -TargetDatabase “DB01” -BadItemLimit 100

 Move the bulk users mailbox to Database DB01

 Create CSV file having the email address of the users and name it as “EmailAddress.csv”

ForEach ($User in Get-Content “C:\temp\EmailAddress.csv”){ New-MoveRequest -Identity $user -TargetDatabase “DB01”}

 To suspend specific user Mailbox move request

 Suspend-MoveRequest -Identity ‘username@example.com’

 To suspend all the move request

 Get-MoveRequest -MoveStatus InProgress | Suspend-MoveRequest

Resume Failed Requests

Get-MoveRequest -resultsize unlimited -MoveStatus Failed | Resume-MoveRequest

Get Failed Moves and resume move requests

Get-MoveRequest -resultsize unlimited -MoveStatus Failed | Resume-MoveRequest

Get Autosuspended Moves and resume move requests

Get-MoveRequest -resultsize unlimited -MoveStatus Autosuspended | Resume-MoveRequest

 Mailbox Move Request Reports – Get detailed info for moved mailbox

Get-MoveRequest | Get-MoveRequestStatistics | Select DisplayName, Status, TotalItemSize, TotalMailboxItemCount, PercentComplete, BytesTransferred, ItemsTransferred

 Mailbox Move Request Reports – Calculating the Total Mailbox Size moved

 $total = Get-MoveRequest | Get-MoveRequestStatistics | Measure-Object TotalMailboxSize -Sum | select -expand sum

[Math]::Round($total /1gb,2)

Get a count of all mailboxes in database (per DB)

Get-mailboxdatabase -identity <database name> | Get-Mailbox -resultsize unlimited | Group-Object -Property:Database | FT name,count -AutoSize

Use this command to view how many move requests are in the queue to be moved:

(Get-MoveRequest -MoveStatus Queued).count

Find the number of Move requests that haven’t completed:

(Get-moverequest -resultsize unlimited | Get-moverequeststatistics| where {$_.Status -notlike “completed*”}).count

Get Good Mailbox Move information for Moves in Progress

Get-moverequest -MoveStatus InProgress | Get-moverequeststatistics| ft DisplayName,PercentComplete,TotalMailboxSize,Bytes* -AutoSize

Get Mailbox Move information by BATCH NUMBER 

Get-moverequest -resultsize unlimited |get-moverequeststatistics |where ({$_.Batchname -like “acct” -and $_.Status -ne “completed”})| sort-object -Property Status -descending | ft Displayname, status, percentcomplete -AutoSize

Get Mailbox Move information by BATCH NUMBER and good information

Get-moverequest | Get-moverequeststatistics| ft DisplayName,batchname,PercentComplete,TotalMailboxSize,Bytestransferredperminute -AutoSize

Get Move Status by Database

Get-moverequest -resultsize unlimited | Get-moverequeststatistics| where {$_.SourceDatabase -like “<source database name>} | Sort-Object -Property PercentComplete -Descending | ft DisplayName, batchname, SourceDatabase,PercentComplete,Status -AutoSize

Get Mailbox Moves that are NOT completed

Get-moverequest -resultsize unlimited | Get-moverequeststatistics| where {$_.Status -notlike “completed*”} | Sort-Object -Property PercentComplete -Descending | ft DisplayName, batchname, SourceDatabase,PercentComplete,Status -AutoSize

Get Mailbox Moves that are Completing

Get-moverequest -resultsize unlimited | Get-moverequeststatistics| where {$_.Status -eq “completing”} | Sort-Object -Property PercentComplete -Descending | ft DisplayName, batchname, SourceDatabase,PercentComplete,Status -AutoSize

Use these commands to get a snapshot of the move throughput for completed moves.

$stats = Get-MoveRequest -MoveStatus Completed | Get-MoveRequestStatistics

$stats | sort totalmailboxsize | ft Alias,{$_.totalmailboxsize.ToMB()},totalinprogressduration -auto

Get Mailbox Moves that are NOT completed by Database

Get-moverequest -resultsize unlimited | Get-moverequeststatistics| where {$_.SourceDatabase -like “<database name> -and $_.Status -ne “completed”} | Sort-Object -Property PercentComplete -Descending | ft DisplayName, batchname, SourceDatabase,PercentComplete,Status -AutoSize

Get Mailbox Moves by Source DB that are pending completion (Auto Completion)

Get-moverequest -resultsize unlimited | Get-moverequeststatistics| where {$_.SourceDatabase -like “<database name> -and $_.Status -eq “autosuspended”} | Sort-Object -Property PercentComplete -Descending | ft DisplayName,PercentComplete,TotalMailboxSize,Bytestransferredperminute ,status -AutoSize

Get Mailbox Moves by Batch that are pending completion (Auto Completion)

Get-moverequest -resultsize unlimited | Get-moverequeststatistics| where {$_.Batchname -like “batch1 -and $_.Status -eq “autosuspended”} | Sort-Object -Property PercentComplete -Descending | ft DisplayName, batchname, SourceDatabase,PercentComplete,Bytestransferredperminute, Status -AutoSize

Get Mailbox Moves that are Suspended

Get-moverequest -resultsize unlimited | Get-moverequeststatistics| where {$_.Status -eq “suspended”} | Sort-Object -Property PercentComplete -Descending | ft DisplayName, batchname, SourceDatabase,PercentComplete,Status -AutoSize

Get Suspended Moves and resume move requests

Get-MoveRequest -resultsize unlimited -MoveStatus Suspended | Resume-MoveRequest

Get Mailbox Moves that are NOT completed and resume them

Get-moverequest -resultsize unlimited | Get-moverequeststatistics| where {$_.Status -ne “completed”} | Resume-MoveRequest

Get Failed Moves and resume move requests

Get-MoveRequest -resultsize unlimited -MoveStatus Failed | Resume-MoveRequest

Get Autosuspended Moves and resume move requests

Get-MoveRequest -resultsize unlimited -MoveStatus Autosuspended | Resume-MoveRequest

Get Completed Moves and Remove move requests

Get-MoveRequest -resultsize unlimited -MoveStatus Completed | Remove-MoveRequest

Get Mailbox Moves that are NOT completed and remove requests

Get-moverequest -resultsize unlimited | Get-moverequeststatistics| where {$_.Status -notlike “completed*”} | Remove-MoveRequest

Remove completed moves by Batch

Get-moverequest -resultsize unlimited |get-moverequeststatistics |where ({$_.Batchname -like “batch1 to batch2 -and $_.Status -eq “completed”})| Remove-MoveRequest

Get-Mailbox Move Statistics with Great Details

Get-MoveRequest -resultsize unlimited| Get-MoveRequestStatistics |Sort-Object CompletionTimeStamp| ft DisplayName, @{Expression={$_.BadItemsEncountered};Label=”Errors”}, @{Expression={$_.PercentComplete};Label=”Percent”}, @{Expression={$_.TotalMailboxSize.ToString().Split(“(“)[0]};Label=”Size”}, @{Expression={$_.totalinprogressduration};label=”Time”},@{Expression={(($_.BytesTransferred/$_.TotalInProgressDuration.TotalMinutes)*60).ToString().Split(“(“)[0]};Label=”Pace/hr”}, @{Expression={$_.MRSServerName.ToString().Split(“.”)[0]};Label=”CAS”}, @{Expression={$_.SourceDatabase.ToString().Split(“\”)[0]};Label=”SourceServer”},SourceDatabase,Status,CompletionTimestamp -auto

Get-Mailbox Move Statistics with Great Details and export

Get-MoveRequest -resultsize unlimited| Get-MoveRequestStatistics |Sort-Object status| ft DisplayName, @{Expression={$_.BadItemsEncountered};Label=”Errors”}, @{Expression={$_.PercentComplete};Label=”Percent”}, @{Expression={$_.TotalMailboxSize.ToString().Split(“(“)[0]};Label=”Size”}, @{Expression={$_.totalinprogressduration};label=”Time”},@{Expression={(($_.BytesTransferred/$_.TotalInProgressDuration.TotalMinutes)*60).ToString().Split(“(“)[0]};Label=”Pace/hr”}, @{Expression={$_.MRSServerName.ToString().Split(“.”)[0]};Label=”CAS”}, @{Expression={$_.SourceDatabase.ToString().Split(“\”)[0]};Label=”SourceServer”},SourceDatabase,Status,CompletionTimestamp -auto > c:\dame.txt

Cancel Move Request for one user

Get-moverequest -Identity ‘user’ | Remove-MoveRequest

Get Move request ERROR status for Failed jobs

Get-moverequest -resultsize unlimited |get-moverequeststatistics |where ({$_.Batchname -like “batch” -and $_.Status -eq “failed”})| sort-object -Property Status -descending | fl DisplayName,batchname,sourcedatabase,targetdatabase,overallduration,mrsservername,totalmailboxsize,totalmailboxitemcount,percentcomplete,failurecode,failuretype,message,failuretimestamp

Get Move request ERROR status for Failed jobs

Get-moverequest -resultsize unlimited |get-moverequeststatistics |where {$_.Status -eq “failed”}| sort-object -Property Status -descending | fl DisplayName,batchname,sourcedatabase,targetdatabase,overallduration,mrsservername,totalmailboxsize,totalmailboxitemcount,percentcomplete,failurecode,failuretype,message,failuretimestamp

Get move details for ongoing moves

Get-moverequest -resultsize unlimited |get-moverequeststatistics |where ({$_.Batchname -like “batch” -and $_.Status -ne “completed”})| sort-object -Property Status -descending | ft DisplayName,batchname,status,targetdatabase,overallduration,mrsservername,percentcomplete -autosize

Find number of moves that haven’t completed

(Get-moverequest -resultsize unlimited |get-moverequeststatistics |where {$_.Batchname -like “batch” -and $_.Status -ne “completed”}).count| ft -autosize

Create a local move request

New-MoveRequest -Identity ‘user@domain.com’ -TargetDatabase <database name>

Create a move request that suspends before completion

New-MoveRequest -Identity ‘user@domain.com’ -TargetDatabase <database name> -SuspendWhenReadyToComplete

Remove \ Clear completed move requests

Get-MoveRequest -resultsize unlimited -MoveStatus queued | Remove-MoveRequest

Resume Failed Requests

Get-MoveRequest -resultsize unlimited -MoveStatus Failed | Resume-MoveRequest

Create a move request processed by a specific server

New-MoveRequest -Identity ‘user@domain.com’ -TargetDatabase <database name> -MRSServer exchsrv1.domain.com

Move a user’s primary mailbox and allow a large bad item limit

New-MoveRequest -Identity ‘user@domain.com’ -TargetDatabase <database name> -BadItemLimit 100 -AcceptLargeDataLoss

Exit mobile version