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?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

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
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
10 Tips to Protect Your Business from Ransomware

Did you know that ransomware is the most widespread, destructive malware in the world today? It accounts for 39% of all security breaches, with ransomware gangsters projected to make $11.5B in profits from online extortion by 2019.

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
Felix LevenSenior 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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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
chrismerrittCommented:
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Powershell

From novice to tech pro — start learning today.