move mailbox with conditional - from one store to another store

Hi - exchange power shell experts,

I have a questions about move mailbox from one store to another store on a same server.
i know we can use:
get-mailbox -database "DB1" | move-mailbox -targetdatabase "DB2" –MaxThreads 4
this will move all mailbox in DB1 to DB2.

we have a large DB1 and i have to break it into 2-3 small DBs in different SGs.
I could not just move everything at once and there are over thousands of mailboxes as well.

is there a way to move them by size group.
like 0-100MB, 101-200MB...

Thanks a lot!

Robin
robinyanwangAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
Felix LevenConnect With a Mentor Senior System and DatabaseadministratorCommented:
exchange 2010:

Get-MailboxDatabase db1 | get-mailboxstatistics | where {$_.TotalItemSize -lt 100MB | get-mailbox | New-MoveRequest -TargetDatabase yourdb

exchange 2007 = Move-Mailbox
0
 
Felix LevenSenior System and DatabaseadministratorCommented:
Test on Test Mailbox first please:
Get-MailboxStatistics | Where {$_.TotalItemSize -lt 100MB} | Move-Mailbox -TargetDatabase "yourserver\Mailbox Database"

Moves Mailboxes smaller then 100 MB
0
 
robinyanwangAuthor Commented:
i also know
Get-MailboxDatabase "DB1" | Get-MailboxStatistics | Sort DisplayName | Select @{Name="TotalItemSize(MB)";Expression={$_.TotalItemSize.Value.ToMB()}}, DisplayName | ? {$_.'TotalItemSize(MB)' -lt 100}

this will show all mailboxes in DB1 with total size under 100MB.

I do not know how to combine them together with move-mailbox...
0
Easily manage email signatures in Office 365

Managing email signatures in Office 365 can be a challenging task if you don't have the right tool. CodeTwo Email Signatures for Office 365 will help you implement a unified email signature look, no matter what email client is used by users. Test it for free!

 
Felix LevenSenior System and DatabaseadministratorCommented:
Test on Test Mailbox first please:
Get-MailboxDatabase "DB1" | Get-MailboxStatistics | ? {$_.'TotalItemSize(MB)' -lt 100} | Move-Mailbox -TargetDatabase "yourserver\Mailbox Database"
0
 
robinyanwangAuthor Commented:
it does not work.

i can out put these mailboxes either with get-mailbox,  or get-mailboxdatabase
between 100-200MB, when i tried to combine with move-mailbox, it does not work.
0
 
robinyanwangAuthor Commented:
[PS] C:\>move-mailbox "ann.james@uaz.com" -targetdatabase "staff db"
Cannot open the log file 'C:\Program Files\Microsoft\Exchange Server\Logging\MigrationLogs\move-Mailbox20120309-160647-
1895865.log'.
At line:1 char:1
+  <<<< move-mailbox "ann.james@uaz.com" -targetdatabase "staff db"
    + CategoryInfo          : InvalidOperation: (:) [], InvalidOperationException
    + FullyQualifiedErrorId : 960CAC4


I can not even run move-mailbox cmdlet...am i typing something wrong? i am using ex2k7...
0
 
chrismerrittConnect With a Mentor Commented:
Looks like you lack permissions on the path specified to create the .log file. Try running the Exchange Shell window as admin.
0
 
Felix LevenSenior System and DatabaseadministratorCommented:
But you run the exchange console as (exchange) Admin ?
0
 
robinyanwangAuthor Commented:
i am a domain admin and i can move mailbox using EMC without any problem
0
 
chrismerrittCommented:
doesn't matter. In Server 2008 you still need to run Exchange Shell as admin to do certain tasks sometimes.
0
 
robinyanwangAuthor Commented:
so...where i can add my self then?
0
 
robinyanwangAuthor Commented:
just added myself as exchange admin...
0
 
chrismerrittCommented:
you just right click the exchange shell executable and choose run as admin, same as anything else you run as admin in Windows! :)
0
 
robinyanwangAuthor Commented:
haaaa. yes, i can now...a mailbox is moving...now we can back to track of testing size group moving...
0
 
robinyanwangAuthor Commented:
WORKING now!!!

so great guys...save me tons of time...you are very nice people!
0
 
robinyanwangAuthor Commented:
last little thing,
Get-MailboxDatabase "staff db" | Get-MailboxStatistics | where {$_.TotalItemSize -lt 50MB} | where {$_.TotalItemSize -ge 1MB}

it returns lots of mailbox, how to do the item count?
I would like to know how many mailbox in certain range...

I will raise the point to 500 for you guys. you have a nice weekend.
0
 
chrismerrittCommented:
You shouldn't need to chain Where statements, this should work:

Get-MailboxDatabase "staff db" | Get-MailboxStatistics | where {$_.TotalItemSize -lt 50MB -and $_.TotalItemSize -ge 1MB}

To count the objects you have a couple of choices really:

Measure-Object {
Get-MailboxDatabase "staff db" | Get-MailboxStatistics | where {$_.TotalItemSize -lt 50MB -and $_.TotalItemSize -ge 1MB}
}

Encasing your command in this will count the number of returned objects.

Also you could do it like this:

$MailboxList = Get-MailboxDatabase "staff db" | Get-MailboxStatistics | where {$_.TotalItemSize -lt 50MB -and $_.TotalItemSize -ge 1MB}
$MailboxList.Count

Happy if you want to split the points :)
0
 
robinyanwangAuthor Commented:
Hi about count -

when i tried the measure-object, it does not give me the number, it returns to c:\>

do i have to type an 'enter' at each line, - to break it into different lines?

thanks.
0
 
robinyanwangAuthor Commented:
the second $list.count works!...just do not know why the first measure-object does not work.
0
 
chrismerrittCommented:
You got one method that works, why worry about the other? :)
0
All Courses

From novice to tech pro — start learning today.