It’s not often that you’ll need to convert a mailbox to a mail-user, but when you do, you’ll soon realize the steps go like this:
1. Mail-Disable the user (delete the mailbox)
2. Mail-Enable the user
So what’s the problem? The problem is twofold:
- First, you’ll want to automate this, and there is no “convert” button or command. You’ll need to use PowerShell if converting multiple users.
- Second, and perhaps more importantly, all the Exchange attributes are nullified when you delete the mailbox. This includes CustomAttribute1-15
As we can see, you are not able to pass mailboxes to the Enable-MailUser (as you are able to do in reverse):
![]()
I’ve written a script to solve these problems. Before you run with it, you do need to make one decision:
What do you want the mail-user’s external email address to be?
The below script takes the user’s mailbox alias and then appends @domain.com. You may wish to modify this with whatever their new external address has become.
You’ll also notice I’m using a static domain controller for all configurations. I have found in my testing, that if you do not pick the same DC for all operations, the script could out-run replication.
$DomainController = (Get-ADServerSettings).DefaultConfigurationDomainController.domain
$MailboxList= Get-Mailbox
foreach ($Mailbox in $MailboxList) {
Disable-Mailbox -Id $mailbox.Identity -Confirm:$False -DomainController $DomainController
Enable-MailUser -Id $mailbox.Identity -ExternalEmailAddress ($mailbox.alias +"@domain.com") -DomainController $DomainController
Set-MailUser -Id $mailbox.Identity `
-DomainController $DomainController `
-CustomAttribute1 $Mailbox.CustomAttribute1 `
–CustomAttribute2 $Mailbox.CustomAttribute2 `
–CustomAttribute3 $Mailbox.CustomAttribute3 `
–CustomAttribute4 $Mailbox.CustomAttribute4 `
–CustomAttribute5 $Mailbox.CustomAttribute5 `
–CustomAttribute6 $Mailbox.CustomAttribute6 `
–CustomAttribute7 $Mailbox.CustomAttribute7 `
–CustomAttribute8 $Mailbox.CustomAttribute8 `
–CustomAttribute9 $Mailbox.CustomAttribute9 `
–CustomAttribute10 $Mailbox.CustomAttribute10 `
–CustomAttribute11 $Mailbox.CustomAttribute11 `
–CustomAttribute12 $Mailbox.CustomAttribute12 `
–CustomAttribute13 $Mailbox.CustomAttribute13 `
–CustomAttribute14 $Mailbox.CustomAttribute14 `
–CustomAttribute15 $Mailbox.CustomAttribute15
}
(add more attributes if necessary, but remember that since you aren’t deleting the Active Directory object itself, most attributes remain…)