Exchange Move Request
In practical, there are several ways
to monitor the mailbox moves:
- Using the Exchange Management Shell (EMC)
- Using the Exchange Management Console (EMS)
- Using the performance monitor
We’ll go through all of the above procedures
and define whichever method you prefer as effectively as possible.
➤Exchange
Management Shell:
There are number of options
available.when using the EMS, actually have several cmdlet options to monitor
the move requests:
- Get-MoveRequest
- Get-MoveRequestStatistics
- Get-MailboxStatistics
➤Get-MoveRequest:
Get-MoveRequest; by itself, this PowerShell cmdlet will only give you a brief overview of the move requests which are currently active or queued. Without using the | fl command in the pipeline, it will only display:- displayname
- status
- targetdatabase
- AutoSuspended – the move request is currently suspended; it can only get this status if you’ve used the SuspendWhenReadyToComplete parameter when submitting the move request. The SuspendWhenReadyToComplete parameter will allow the mailbox move to start, but the move will be suspended when it reaches the CompletionInProgress status, which we’ll come to in a moment.
- Completed – the move request has been completed.
- CompletedWithWarning – the move request has been completed with at least one warning, which can happen due to several reasons; For example, if the old mailbox could not be cleaned up
- CompletionInProgress – the move request process is performing the last sync with the old mailbox before the new mailbox is marked as active.
- Failed – the move request has failed, which can happen due to several reasons; for example, the permissions set on specific folders might be corrupted, or the maximum number of bad items is reached.
- InProgress – the Microsoft Exchange Mailbox Replication service (MRS) is currently moving the mailbox.
- Queued – the move request is currently waiting to be picked up by the Microsoft Exchange Mailbox Replication service (MRS).
- ReadyToComplete – the move request has been suspended, and is now waiting for a manual action from the administrator before it can be completed.
- Suspended – the move request is currently suspended, which can be the result of using the suspend parameter when submitting the move request. When using the suspend parameter, the move will still be submitted, but the actual move will not start until the Resume-MoveRequest cmdlet is performed.
There are a few fields which might be very useful when monitoring the
move process:
- Flags – this reports which options are being used for the move, such as CrossOrg, Pull, Offline, or RemoteLegacy. This information will tell you if a mailbox is being moved from another forest which runs, for example, Exchange 2003, and that the mailbox is not available during the move.
- MoveType – this field reports the type of move which is being performed, and is more generic than the Flags field. For example, CrossOrg (from another forest), or IntraOrg (from another Exchange server in the same forest)
- Direction – the possible values of this field are pull or pushed; pull can be seen when performing a migration from another Exchange server, whereas pushed can be seen when moving a mailbox to another Exchange server. So if, for example, we start a mailbox move on an Exchange 2010 server which will migrate a mailbox from an Exchange 2003 server, this is a pull migration. If, on the other hand, a mailbox move is started on an Exchange 2010 server which will move the mailbox to another Exchange 2010 server, this will be a pushed migration.
- IsOffline – This tells us whether the mailbox is available during a move. If the value is true, then the mailbox will not be available, and if of the value is false then the mailbox will be available.
Additional output will provide some
extra information, but won’t provide a detailed status overview of how long
each step took or answer questions like “how many megabytes are transferred?“,
“what was the time needed to perform the move?“, “what is the current
bytes-transferred-per-minute?“, and, in case of CompletedWithWarning,
“what is the problem that occurred?“.
➤Get-MailboxRequestStatistics:
If you would like to see this kind of fine-grained information, then you’ll need to use the Get-MoveRequestStatistics cmdlet which, as the its name implies, will give you detailed information about the move. Without using the |fl pipeline, this cmdlet will display:- Displayname
- Status
- TotalMailboxSize
- TotalArchiveSize
- PercentComplete
Command: Get-moverequest | get-moverequeststatistics
just like the Get-MoveRequestcmdlet, the Get-MoveRequestStatistics
cmdlet will give a lot more information when used in conjunction with the |fl
command. Of course, compared to using |flwith Get-MoveRequest,
the Get-MoveRequestStatisticscmdlet by itself will already provide
plenty of information which is very useful when troubleshooting move requests.
this will not necessarily be very useful when done in
combination with the pipelined GetMoveRequest | Get-MoveRequestStatisticscmdlets,
as this will potentially generate a huge and unreadable overview.
Generating an overview of move
requests which are currently InProgress:
Command: Get-moverequest
-MoveStatus InProgress
Now that we know which moves are currently active, we need
to gather some extra details about the move. As mentioned earlier, we will need
to pipeline the results into the Get-MoveRequestStatisticscommand to
gather the additional information. To get the displayname, percentage
completed, size of the mailbox and the bytes transferred per minute, we will
need to use the fieldnames available from the Get-MoveRequestStatistics cmdlet.
So in this case, DisplayName, PercentComplete, TotalMailboxSize and
BytesTransferedPerminute:
Command: Get-moverequeststatistics
| select DisplayName,PercentComplete,TotalMailboxSize,BytesTransferedPerMinute
When combining these two cmdlets, you will get the command
like this:
Get-moverequest -MoveStatus InProgress
| Get-moverequeststatistics
| select DisplayName,PercentComplete,TotalMailboxSize,BytesTransferedPerMinute
As you may already know, you will
need to clean up the move request manually by running the Remove-MoveRequest
cmdlet. Once you’ve performed that cleanup, you won’t be able to use the Get-MoveRequest
and Get-MoveRequestStatistics cmdlets anymore. However, it’s still
possible to view the move request history by using the Get-Mailbox
cmdlet together with the IncludeMoveHistory parameter. Alternatively, if
the request hasn’t been removed yet, you can use the IncludeMoveReportparameter
to find out plenty of useful details. The difference between the parameters,
besides the fact that IncludeMoveReport is not available once the move
request has been cleared, is the information which will be provided to you:
Specifically, the difference between
the two parameters is the amount of information you will receive. If you just
want to know certain specific information about the last completed move – date
and time, target database, size of the mailbox and the duration of the move
process – then you can use the IncludeMoveHistory parameter:
Get-mailboxstatistics -identity karim
-includemovehistory | fl
|
For more details:
Using the Exchange Management
Console
Get-mailboxstatistics -identity karim
-includemovereport| export-csv c:\reports\karim.csv
Comments
Post a Comment