Pour éviter de saisir les utilisateurs un par un dans Active Directory, il est nécessaire de faire un script qui va automatiser cette manipulation. J’ai réalisé un script en powershell. Voici comment j’ai procédé.
Le script a été testé sur Microsoft Windows Serveur 2008 R2 Standard 64 Bits
Sources :
- http://asov.eztvix.info/?page_id=682
- http://www.quest.com/powershell/activeroles-server.aspx
- http://technet.microsoft.com/fr-fr/library/dd347665.aspx
1 – Installation d’applets (commandes powershell) supplémentaire
Pour créer les utilisateurs en utilisant la commande New-ADUser il faut installer des applets supplémentaires. Les télécharger à l’adresse suivante.
http://www.quest.com/powershell/activeroles-server.aspx
Après avoir téléchargé le fichier, double cliquer sur le fichier. La fenêtre suivante apparait.
Cliquer sur Next
Cocher I accept the terms in the License Agreement puis cliquer sur Next
Saisir le Nom et l’Entreprise puis cliquer sur Next.
Cliquer sur Install
L’installation se déroule
Cliquer sur Finish pour terminer l’installation.
Les applets sont maintenant installés. Il y a deux possibilités pour les utiliser. Tout d’abord, en saisissant cette commande Add-PSSnapin Quest.ActiveRoles.ADManagement dans une fenêtre shell qui va permettre de charger le module
Saisir la commande puis appuyer sur [Entree]
Puis saisir les commandes de format New-QA… par exemple New-QADUser qui permet de rajouter un utilisateur dans active directory.
Il existe aussi un shell qui prend en compte directement le module. Pour l’exécuter, cliquer sur Démarrer > Saisir PowerShell > Module Active Directory pour Windows PowerShell
La fenêtre suivante apparait et saisir les commandes de format New-A… par exemple New-ADUser qui permet de rajouter un utilisateur dans active directory.
2 – Création du Script et du fichier CSV
2-1 Le Script
Dans mon cas, le script va s’exécuter via powershell . Le script va commencer par charger le module Quest Active Directory puis importer l’utilisateur depuis un fichier CSV et pour finir créer l’utilisateur.
Dans le script, modifier suivant vos informations les parties en gras. Les utilisateurs seront ajoutés dans Users. Le script et le fichier CSV sont stocké dans C:\Add_User_Powershell\.
#
# Création d’utilisateurs dans Active Directory
# Ce script interroge un fichier CSV contenant la liste des utilisateurs
#
# Pré-Requis
# [+] http://www.quest.com/powershell/activeroles-server.aspx
#
# Auteur : POMENTE Guillaume
# Blog : http://guillaume-p.net
#
# Version 1.0
# Chargement du module Quest ActiveDirectory
echo « Chargement du Module Quest Active Directory »
Add-PSSnapin Quest.ActiveRoles.ADManagement
# Importation du fichier .CSV
echo « Importation du fichier CSV »
$utilisateurs = Import-Csv -path « C:\Add_User_Powershell\test_users.csv » -delimiter « ; »
# Création de l’utilisateur
foreach($utilisateurs in $utilisateurs)
{
$pass = $utilisateurs.password
$nom = $utilisateurs.sn
$prenom = $utilisateurs.givenname
$displayname = $utilisateurs.displayname
$name = $utilisateurs.name
$login = $utilisateurs.samaccountname
$mail = $utilisateurs.mail
$ou = « CN=Users,DC=votredomaine,DC=local »
$password = $utilisateurs.password
echo « Création de l’utilisateur $displayname »
new-QADuser -name « $name » -FirstName « $prenom » -LastName « $nom » -displayname « $displayname » -samaccountname « $login » -email « $mail » -UserPassword (convertto-securestring « $password » -asplaintext -force ) -ParentContainer « $ou » | Enable-QADUser
echo « Utilisateur $displayname crée »
}
Si jamais vous souhaitez passer directement par le Module Active Directory pour Windows PowerShell (vu ci-dessus) remplacer la commande new-QADuser -name « $name […]Enable-QADUser par celle-ci :
New-ADUser –name « $name » –givenname « $givenname » –surname « $sn » –displayname « $displayname » –samaccountname « $login » –emailaddress « $mail » –enabled 1 –accountpassword (convertto-securestring $password –asplaintext –force)
2-2 Le fichier CSV
Le fichier CSV, va contenir la liste de tous les utilisateurs à créer. Il doit être rédigé comme ci-dessous.
displayname;sn;givenname;name;samaccountname;mail;password
Prenom Nom;Nom;Prenom;identifiant;identifiant;adresse mail;motdepasse;
2-3 Exécution du script
Vérifier que votre script et votre fichier CSV sont dans le même dossier. Dans mon cas C:\Add_User_Powershell\
Se déplacer dans le dossier Add_User_Powershell
cd C:\ Add_User_Powershell
Saisir .\nomduscript.ps1 dans mon cas .\add_users_AD.ps1
Si tout s’est correctement déroulé, vous devriez avoir cette fenêtre avec un récapitulatif des utilisateurs créés.
Auteur : POMENTE Guillaume
Partager la publication "SCRIPT POWERSHELL CREATION UTILISATEURS ACTIVE DIRECTORY"
Salut,
Je commence tout juste à essayer de comprendre PowerShell mais ce n’est pas chose facile!!!
Tout d’abord, merci pour ton script et tuto. Cependant, j’ai suivi tout ce que tu as fait mais j’ai un message en retour.
Peux tu m’aider à comprendre STP?
voici le message:
Impossible de charger le fichier C:\Users\D1noeil\Desktop\Test_ Script_PS\new-users.ps1. Le fichier C:\Users\D1noeil\Desktop\Test_ Script_PS\new-users.ps1 n’est pas signé numériquement. Le script ne sera pas exécuté sur le sys
tème. Pour plus d’informations, consultez « get-help about_signing »..
Au niveau de ligne : 1 Caractère : 16
+ .\new-users.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
Bonjour,
Il faut autoriser l’exécution de tous les scripts avec la commande : Set-ExecutionPolicy RemoteSigned
Cordialement,
Oups, au temps pour moi! J’avais pas vu ton autre lien.
Je n’ai plus cette erreur mais j’en ai une nouvelle….
Voici la nouvelle erreur lorsque j’exécute le script:
Le terme « new-aduser » n’est pas reconnu comme nom d’applet de commande, fonction, fichier de script ou programme ex
utable. Vérifiez l’orthographe du nom, ou si un chemin d’accès existe, vérifiez que le chemin d’accès est correct et
essayez.
Au niveau de C:\Users\D1noeil\Desktop\Test_ Script_PS\new-users.ps1 : 12 Caractère : 11
+ new-aduser <<<< -name $displayname -surname $nom -givenname $prenom -displayname $displayname -samaccountname $log
-accountpassword (convertto-securestring $pass -asplaintext -force) -Path $ou -description $description -title $fonc
on -enabled $true
+ CategoryInfo : ObjectNotFound: (new-aduser:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
D'ou cela peut il venir?
Merci par avance
Bonjour,
Est ce que le module Quest Active Directory se charge correctement ?
Cordialement,
Bonjour Guillaume
J’utilise ton script et j’ai quelques soucis !
Est-ce que tu as une idée?
Par avance merci 🙂
New-QADUser : A referral was returned from the server.
At C:\add_user_powershell\add_users_AD.ps1:57 char:20
+ new-QADuser <<<< -name " $name " -FirstName " $givenname " -LastName " $name " -displayname " $displayname "
-samaccountname " $login " -email " $mail " -UserPassword (convertto-securestring " $password " -asplaintext -force )
-ParentContainer " $ou " | Enable-QADUser
+ CategoryInfo : NotSpecified: (:) [New-QADUser], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Quest.ActiveRoles.ArsPowerShellSnapIn.Powers
hell.Cmdlets.NewUserCmdlet
Bonjour,
Avec quelle console PowerShell lances tu le script ? Est ce que le module se charge correctement ?
Cordialement,
Bonjour Guillaume,
Tout d’abord, merci pour votre tutoriel. Je rencontre cependant un message d’erreur lorsque je tente d’exécuter mon script. Pourtant, j’ai suivis à la lettre les différentes étapes, et j’ai conservé les chemins d’accès ( C:\Add_User_Powershell )
Vous trouverez ci-joint une capture d’écran montrant l’erreur rencontré, en espérant que vous trouverez le plus de détails possible: http://npic.imagup.com/2/1177743849.jpg
D’avance, merci pour votre aide !
Cordialement,
Bonjour,
Remplacez la ligne echo «Création de l’utilisateur» par echo « Création de l’utilisateur »
Cordialement,
Bonjour,
Je voudrais rajouter le chemin de création à ce script, en effet mes utilisateurs doivent être créés dans plusieurs UO, cela est il possible ?
Bonjour,
Oui c’est tout à fait possible. Il suffit de rajouter une colonne dans le fichier csv puis modifier la variable $ou = « CN=Users,DC=votredomaine,DC=local »
Cordialement,
Bonjour,
Merci pour ce tutoriel mais dommage que vous n’ayez pas mis le contenu de votre fichier csv. Car dans la colonne name et sammacountname qui sont de sidentifiants je ne sais pas quoi mettre..
Bonjour,
Voici une exemple de fichier CSV.
displayname;sn;givenname;name;samaccountname;mail;password
Guillaume POMENTE;POMENTE;Guillaume;Guillaume POMENTE;guillaume.pomente;guillaume.pomente@mondomaine.test;monmotdepasse;
Cordialement,
Bonjour,
Et merci pour ce super tuto et script bien pratique !!
J’aurai cependant une question (car j’y suis confronté) comment traiter les homonymes ? C’est à dire s’il y a déja un utilisateur « hernandez » dans l’AD dans l’état il ne sera pas crée.
Dans mon organisme quand cela arrive on a par habitude de reprendre le nom et d’y ajouter « _1ère lettre du prénom », et cas plus rare si le login existe encore on ajoute « _2premieres lettres du prénom » (etc…) .
Encore merci.
Cordialement,
Bonjour,
Plusieurs politique peuvent être appliqué. Il faut mettre en place celle qui vous correspond le mieux. Dans mon cas je fais prenom.nom ça limite les homonymes.
Cordialement,