17/11/2024

Active DirectoryPowerShell

Active Directory : Set-ADUser et multiple ProxyAddresses

I. Présentation

Au sein de l'Active Directory, chaque objet "utilisateur" dispose d'un attribut nommé "proxyAddresses" qui est utilisé pour la messagerie. Il est généralement utilisé lors de la mise en place de la synchronisation entre Active Directory et Office 365 via Azure AD Connect.

Cet attribut à valeur multiple contient l'adresse e-mail principale de l'utilisateur, et éventuellement ses alias de messagerie. Dans ce tutoriel, nous allons justement voir comment ajouter par script plusieurs valeurs dans cet attribut, le tout avec PowerShell.

II. Modifier proxyAddresses avec PowerShell

Pour modifier un utilisateur dans l'Active Directory, nous allons utiliser le cmdlet "Set-ADUser" qui est très puissant et permet de modifier l'ensemble des attributs (autorisés) d'un utilisateur. Pour définir plusieurs valeurs proxyAddresses, nous pouvons utiliser un tableau de valeur.

Note : Pour rappel, l'adresse principale doit être définie avec "SMTP", et les alias avec "smtp" - La casse est donc très importante.

Commençons par définir nos adresses e-mails :

$EmailPrincipale  = "[email protected]"
$EmailSecondaire = "[email protected]"

On va ensuite construire notre tableau de valeurs (il peut y en avoir plus de deux, selon le nombre d'alias) :

$UserEmails = @("SMTP:$EmailPrincipal","smtp:$EmailSecondaire")

On va ensuite venir remplacer la valeur de l'attribut proxyAddress de notre utilisateur par le contenu de notre variable $UserEmails.

$DomainController = "SRV-DC"
$SamAccountName = "florian"
Set-ADUser -Identity $SamAccountName -Server $DomainController -Replace @{proxyAddresses=$UserEmails}

Cette commande Set-ADUser va ajouter l'adresse principale SMTP et l'alias smtp.

Maintenant, on pourrait avoir besoin de le faire en deux temps, d'abord ajouter l'adresse principale avec SMTP et ensuite l'alias avec smtp. On va toujours utiliser Set-ADUser, puis dans un premier temps on va écraser l'attribut proxyAddresses pour mettre l'adresse principale (-Replace) et on va venir ajouter l'alias (-Add).

Ce qui nous donne ces deux commandes :

Set-ADUser -Identity $SamAccountName -Server $DomainController -Replace @{proxyAddresses="SMTP:$EmailPrincipale" }
Set-ADUser -Identity $SamAccountName -Server $DomainController -Add @{proxyAddresses="smtp:$EmailSecondaire" }

Je vous laisse rafraîchir votre console Active Directory pour vérifier que le changement est bien pris en compte ! Sinon, pour le fun on peut aussi le vérifier en ligne de commande :

Get-ADUser -Filter 'SamAccountName -eq "florian"' -Properties proxyAddresses -Server $DomainController

Voilà, à vous de jouer !

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “Active Directory : Set-ADUser et multiple ProxyAddresses

  • Bonjour,

    modifier les attributs exchange en direct sans passer par ECP ou les cmdlet Exchange n’est pas supporté

    https://blogs.technet.microsoft.com/exchange/2012/12/05/decommissioning-your-exchange-2010-servers-in-a-hybrid-deployment/

    […]For example, adding a proxy address or putting a mailbox on litigation hold when there isn’t an Exchange Management Console (EMC) or Exchange Management Shell (Shell) on-premises becomes difficult and these simple (and other more complex) tasks cannot be done in a supported way.[…]

    Je sais, ça fait mal aux yeux..

    Répondre
  • Bonjour,

    Excellent tuto, fonctionne très bien. Merci.

    Petite erreur dans le nom des variables « $EmailPrincipale » qui se retrouve sans E dans « $UserEmails ».

    Répondre
  • Bonjour,

    La variable $UserEmails doit être une [String], en ajoutant -join ‘,’ ça fait l’affaire :

    $UserEmails = @(« SMTP:$EmailPrincipal », »smtp:$EmailSecondaire ») -join ‘,’

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.