In order to get a list of all (or part) of the mailboxes and view their sizes, simply use the following PS script:

Get-mailbox | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName, ItemCount, TotalItemSize, Database -auto | Out-File c:\mbx_sizes.txt

The above command, will get all the mailboxes, and list their sizes and the database they are member or, then output the result to a text file called mbx_sizes.txt…

You can change the sorting to be Ascending, to have the smallest mailbox on top…

Also, you can get the sizes for mailboxes in a specific database by:

Get-mailbox -Database <DATABASE_NAME> | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName, ItemCount, TotalItemSize, Database -auto | Out-File c:\mbx_sizes.txt

Replace <DATABASE_NAME> with the actual name of your database.

And of course you can do it for 1 mailbox as well by using:

Get-MailboxStatistics -Identity <USER_ID> | ft DisplayName, ItemCount, TotalItemSize

Sometimes you get a sudden need to forward bulk users’ mail to external destination… in normal days, you would create a mail contact, then forward the selected user’s mail to the new external contact.

Now what if you got a large number of contacts to forward? well, you can either:

  1. Manually create all the required mail contacts, then assign each user to each contact.
  2. OR THE BETTER WAY: Use the magic of PowerShell!

This is a very simple and quick procedure…

First, you will need to create the contacts, which you can find how in the following post: PS: Creating bulk mail contacts

Then with another script, you will forward each user to his corresponding mail contact item:

Import-CSV "C:\ContactForward.csv" | Foreach{Set-Mailbox -Identity $_.LocalUser -ForwardingAddress $_.ForwardAddress -DeliverToMailboxAndForward $true}

You can either keep the attribute “-DeliverToMailboxAndForward $true” to keep a copy of the message in the original mailbox or remove it.Read the rest “PS: Bulk forwarding mailboxes to external addresses”

Below is a useful script to create bulk contacts in Exchange Management Shell:

Import-CSV "C:\NameList.csv" | Foreach{New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalAddress}

You need to have the following prepared before you use the script:

  1. A CSV file contains 2 headers: Name, ExternalAddress, with all the contacts list that you want to create.
  2. Save the CSV file in C:\ (to be completely complied with the script above, otherwise save it where you want, but make sure you specify it’s full path in the script above instead of “C:\NameList.csv”.

To make it a bit easier, here is the script ready, just open EMS and run it from there after you make sure the file is ready…

Bulk-MailContact

Hello everybody

Last few days  I was having too much troubles with the rain, and the situation was not good at all in Jeddah, I even had to spend 1 night out of home… 🙁 because the water has blocked almost all the roads in the city… actually you can see a bit of what happened from my Facebook profile: http://www.facebook.com/salehram, well, it is in Arabic so you better know some Arabic if you are not Arabic 😛

OK, I almost forgot the main reason of this topic 😀 , it is about managing the Exchange users using the Groups in Active Directory…

There are many ways to manage the users in the Exchange, the easiest at all is using the EMC (Exchange Management Console), and there are many methods to do that, for example you can:

  • Just go for the user you want and right click him
  • Multi-select a
Read the rest “PS: Managing Exchange Users Using Groups”