Add/remove e-mail addresses using Exchange Management Shell

Adding or removing e-mail addresses from mailboxes using the Exchange Management Shell in Exchange 2007/2010 isn`t a straightforward task, and are a common question in many Exchange/PowerShell-forums. PowerShell MVP Shay Levy has posted an excellent post on how to accomplish this using the Update-List cmdlet in Windows PowerShell 2.0.

To make this easier for Exchange administrators with less PowerShell experience, I decided to create two PowerShell advanced functions, which are available here.

Add-EmailAddress

image

Remove-EmailAddress

image

As you can see, the Remove-EmailAddress accepts either –EmailAddress or –EmailDomain as parameters. Only one of the two can be specified. The –EmailDomain parameter removes all e-mail addresses containing the specified domain. Note that the PrimarySMTPAddress are never modified by either of the two functions. Also note that the functions require Windows PowerShell 2.0, since we are leveraging the Update-List cmdlet.

If you are running Exchange Server 2007 SP2, it is supported to install Windows PowerShell 2.0 (more info here).

To use the functions, you might use one of the following options:

Update 22.11.2010: Shay Levy has posted another blog-post on this topic: Managing email addresses in Exchange 2010. The technique used there are quite different (hash tables), so as you can see, PowerShell offers many different ways to accomplish the same task. What you choose is of course up to you.

9 thoughts on “Add/remove e-mail addresses using Exchange Management Shell

  1. Get-Mailbox -OrganizationalUnit “ourdom.com.au/Non-current Users” | Remove-EmailAddress -EmailDomain slrconsulting.com

    tried this only seemed to do it for one users in the OU, the last one

  2. Jan,

    getting closer I am now getting “Pipeline not executed because a pipeline is already executing. Pipelines cannot be executed concurrently.”

    Warren

  3. I also had to change from mailbox to mailuser, depending on the type, but this makes sense, sorry to keep on but I am new to this powershell