(modifié le 21 mars 2019 à 13:15)

Parfois on a besoin de mettre à jour en masse des attributs utilisateur Active Directory. C'est le cas lors de rachat, filialisation, déménagement, etc.

Voyons comment le faire sur tous les utilisateurs d'une OU (unité d'organisation, ou container).

En PowerShell

Voici un exemple d'injection de quelques champs :

get-aduser -SearchBase "OU=Paris,OU=France,DC=societe,DC=local" -Filter * | set-aduser -streetaddress "3 rue de Pi"
get-aduser -SearchBase "OU=Paris,OU=France,DC=societe,DC=local" -Filter * | set-aduser -postalCode "31415"
get-aduser -SearchBase "OU=Paris,OU=France,DC=societe,DC=local" -Filter * | set-aduser -city "Cloudbled"
get-aduser -SearchBase "OU=Paris,OU=France,DC=societe,DC=local" -Filter * | set-aduser -l $null
get-aduser -SearchBase "OU=Paris,OU=France,DC=societe,DC=local" -Filter * | set-aduser -officephone "+33 4 01 23 45 67"
get-aduser -SearchBase "OU=Paris,OU=France,DC=societe,DC=local" -Filter * | set-aduser -fax "+33 4 01 23 45 68"
get-aduser -SearchBase "OU=Paris,OU=France,DC=societe,DC=local" -Filter * | set-aduser -homepage "http://maboite.fr"

L'injectin du champ "l" avec $null est ici pour vous montrer comment vider un champ (au départ j'avais injecté la ville dans "l" au lieu de "city"... car en PowerShell "city" correspond à "l" dans l'AD...). Pour éviter ce genre d'erreurs, voici la correspondance avec les attributs dans l'AD (visible avec LDAP Browser / ldp.exe) :

  • officephone = attribut telephoneNumber
  • city = attribut l
  • homepage = attribut wWWHomePage
  • tous les attributs (technet)

Pour avoir de l'aide sur des attributs :

Get-Help Set-ADUser -Parameter *phone*

Lister les attributs pour un utilisateur donné :

Get-ADUser xhark-properties * | select telephonenumber

Autre solution pour le faire dans une boucle (bis)

Bien sûr pour mettre à jour juste un utilisateur :

set-aduser xhark -streetaddress "3 rue de Pi"

Avec dsquery

Alternative avec dsquery, qui permet pas de mettre à jour tous les attributs, donc préférez powershell.

dsquery user "OU=Paris,OU=France,DC=societe,DC=local" -limit 0 | dsmod user -street "3 rue de Pi"
dsquery user "OU=Paris,OU=France,DC=societe,DC=local" -limit 0 | dsmod user -tel "+33 4 01 23 45 67"

Conclusion

Simple, pratique, efficace.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter