Modification de masse dans active directory

Fermé
meldrone Messages postés 8 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 24 juillet 2015 - 23 juil. 2015 à 12:32
meldrone Messages postés 8 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 24 juillet 2015 - 24 juil. 2015 à 16:10
Bonjour,

mes recherches ne donnant rien, je me permet d'ouvrir un sujet en espérant que l'un d'entre vous aura une infos ou une piste à suivre.
je cherche à modifier le champs adresse mail de plusieurs compte AD.
pour le chemin dans "profil --> dossier de base" j'ai trouvé l'option %username% qui m'a permit de modifier cette infos pour tous mes utilisateurs et de leur assigné un dossier portant leur login.
mais pour modifier l'adresse mail des comptes j'aurais voulu mettre un truc du style %prenom%.%nom% mais il ne reconnait ni prenom ni nom (ni cn ni sn ni givenname)
quelqu'un saurait il ou je peut trouver une liste des variable utilisable dans l'AD (au même titre que %username%)

par avance merci
A voir également:

2 réponses

kelux Messages postés 3065 Date d'inscription vendredi 18 juin 2004 Statut Contributeur Dernière intervention 20 janvier 2023 432
Modifié par kelux le 24/07/2015 à 14:04
Bonjour,

%username% est une variable d'environnement; ce n'est pas une "variable utilisable dans AD", au sens propre du terme.

https://ss64.com/nt/syntax-variables.html

Les SN,CN givenname sont des attributs format LDAP, et donc non connus par les variables d'environnement.

-

Pour "scripter" avec AD il y a plusieurs méthodes : VBScript, LDIFDE/CSVDE, DSquery (et les autres outils DS*), et powershell. (sans oublier les CMDlets Quest pour AD... Très utile !! http://software.dell.com/products/activeroles-server/powershell.aspx )

Aujourd'hui Powershell devient incontournable.

Voici l'exemple avec Powershell :

Import-Module ActiveDirectory
$users = $users = Get-ADUser -Filter * -SearchBase "OU=MesUsers,DC=domain,DC=local"
foreach ($user in $users)
{
    $email = $user.givenname + '.' + $user.surname + '@domain.com'
    Set-ADUser -Identity $user.samaccountname -EmailAddress $email
}


Il faut modifier :
- le searchbase pour refléter l'environnement et filter là où se trouve les utilisateurs impactés par la modification.
- le champ email et faire correspondre la règle de n,ommage de emails ... notamment le nom de domaine qui est mis manuellement.

Avant de faire tourner ce bout de script, faites le test sur quelques utilisateurs manuellement en changeant 'moncompte' par un compte de test:

Import-Module ActiveDirectory
$user = Get-ADUser moncompte
$email = $user.givenname + '.' + $user.surname + '@domain.com'
Set-ADUser -Identity $user.samaccountname -EmailAddress $email


-

Pour utiliser Powershell dans les environnements AD, il faut :
- Si on exécute le code depuis sa station, il faut installer les RSAT et les modules AD avec Powershell. Je préfère faire tourner ces scripts sur des machines qui ne sont pas controleurs de domaine.

- Les DC sont en 2008r2 et + : pas de souci.

- Les DC sont en 2003-2003r2-2008 : il faut installer ADMGS (le service Web AD) sur ces DCs.
http://www.microsoft.com/en-us/download/details.aspx?id=2852

liens utiles :
http://webreaktech.com/2014/03/10/getting-ad-user-data-via-powershell/

https://serverfault.com/questions/476135/how-to-change-all-users-ad-email-contact-using-powershell



Using a registry "compactor" on top of a registry "cleaner" would be equivalent to rinsing your throat with a swig of Jack Daniels after swallowing a pint of snake oil....
0
meldrone Messages postés 8 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 24 juillet 2015
24 juil. 2015 à 16:10
merci pour ces réponses.
0