[ Résolu ! ] création comptes active directory en VBS

création comptes active directory en VBS [ Résolu ! ] - Windows & Software

Marsh Posté le 13-10-2004 à 14:33:22    

salut à tous,
 
Je viens de modifier un VBS pour créer des comptes utilisateurs pour AD,
Ca ne pose pas de problème pour la création, mais je n'arrive pas à insérer ces comptes "membre" d'un groupe .....
 
Voilà mon code:
 
 adsUser.sn = "NOM"
 adsUser.GivenName = "Prenom"
 adsUser.memberOf = "CN=profs,OU=profs,OU=ecole,DC=ecole,DC=com"
 
en précisant que mon domaine est "ecole.com", j'ai un OU nommée "profs" se trouvant dans une OU "ecole".
 
Pouvez vous m'aider ?
 
 
lim


Message édité par limvachlapdinos le 14-10-2004 à 12:05:38
Reply

Marsh Posté le 13-10-2004 à 14:33:22   

Reply

Marsh Posté le 13-10-2004 à 14:51:51    

Tu ne veux pas mettre le script en entier? ou nous donner un peu plus de details sur cette partie du script, parceque la ca n'est pas evident pour comprendre ce que tu essaye de faire.

Reply

Marsh Posté le 13-10-2004 à 14:52:11    

Dans mes souvenirs MemberOf c'est juste pour verifier l'apartenance a un groupe.
 
Faut plutot faire un truc du genre:
 
Set myGroup = GetObject(<le groupe> )
myGroup.Add(<le user> )
myGroup.SetInfo
 
je pense

Reply

Marsh Posté le 13-10-2004 à 15:10:16    

+1
Par contre ca n'est pas suffisant juste le nom du group et du user, il faut indiquer leurs DN respectifs.
Et .put a la place de .add peut etre, a voir.

Reply

Marsh Posté le 13-10-2004 à 15:14:56    

c fort possible que ce ne soit pas MemberOf qu'il faut utiliser....
 
 
 
Voila le script en entier:
 
 
 

Code :
  1. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  2. ' Script pour créer les utilisateurs dans Active Directory
  3. '
  4. ' Ce script lit et attribut les noms d'utilisateurs du fichier appelé users.txt
  5. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  6. wscript.echo "Le script commence. Cliquez OK pour continuer."
  7. DIM arrRecord
  8. Const ForReading = 1
  9. ''''''''''''''''''''''''''''''''''''''''''''''''
  10. ' Determine le chemin LDAP de votre domaine
  11. ' Rien dans cette partie ne doit etre changé
  12. ''''''''''''''''''''''''''''''''''''''''''''''''
  13. Set Root = GetObject("LDAP://RootDSE" )
  14. DomainPath = Root.Get("DefaultNamingContext" )
  15. ''''''''''''''''''''''''''''''''''''''''''''''''
  16. ' Obtenez l'indicateur à votre objet de domaine
  17. ' Rien dans cette partie ne doit etre changé
  18. ''''''''''''''''''''''''''''''''''''''''''''''''
  19. Set Domain = GetObject("LDAP://" & DomainPath)
  20. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  21. ' Pour indiquer l'OU où mettre les utilisateurs
  22. '
  23. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  24. Set ou_HR = GetObject("LDAP://OU=eleves,OU=ecole, " & DomainPath)
  25. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  26. ' L'objet du fichier systeme est votre point d'entrée dans le fichier système
  27. ' Rien dans cette partie ne doit etre changé
  28. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  29. set fso = CreateObject ("Scripting.FileSystemObject" )
  30. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  31. ' Pour retrouver le fichier texte dans C:\ADSI\users.txt
  32. ' Le nom et l'emplacement peuvent etre modifiés
  33. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  34. Set tsTextFile = fso.OpenTextFile ("C:\ADSI\users.txt", ForReading, False)
  35. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  36. ' Commence à lire le fichier rentré, début de la boucle
  37. '
  38. ' Lit une ligne du fichier
  39. '
  40. ' Rien dans cette partie ne doit etre changé
  41. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  42. While Not tsTextFile.AtEndOfStream    ' START OF LOOP
  43. strRecord = tsTextFile.ReadLine
  44. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  45. ' Découpe la ligne en plusieurs segments délimités par le délimiteur spécifié
  46. ' (Vous pouvez changer le délimiteur)
  47. ' mettre chaque segment dans une rangée nommée arrRecord
  48. ' Le premier segment est référencé par arrRecord(0)
  49. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  50. arrRecord = Split (strRecord, ":" )
  51. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  52. ' Création de l'utilisateur dans l'OU
  53. ' Rien dans cette partie ne doit etre changé
  54. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  55. Set adsUser = ou_HR.Create("user", "CN=" & arrRecord(2))
  56. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  57. ' Définit les sAMAccountName et userPrincipalName
  58. ' attribués pour chaque utilisateur
  59. ' Rien dans cette partie ne doit etre changé
  60. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  61. adsUser.Put "sAMAccountName",  arrRecord(2)
  62. adsUser.Put "userPrincipalName", arrRecord(2)
  63. adsUser.SetInfo
  64. ''''''''''''''''''''''''''''''''''''''''''''''''''''''
  65. ' Active le compte qui est désactivé par défaut
  66. '
  67. ' Rajoute les attributs aditionnés listés dans le fichier texte
  68. '
  69. ' Dans cet exemple, l'attribut de description sera
  70. ' rempli dans le second (1) segment
  71. ' et l'attribut du nom affiché est pris du troisième
  72. ' (2) segment
  73. '
  74. ' Changez cette partie d'attributs add/change
  75. ' rentrés dans le fichier texte
  76. ''''''''''''''''''''''''''''''''''''''''''''''''''''''
  77. adsUser.AccountDisabled = False
  78. adsUser.sn = arrRecord(0)
  79. adsUser.GivenName = arrRecord(1)
  80. adsUser.homeDirectory = "\\serveur\partages"
  81. adsUser.homeDrive = "Z:"
  82. adsUser.memberOf = "CN=profs,OU=profs,OU=ecole,DC=ecole,DC=com"
  83. '''''''''''''''''''''''''''''''''''''''''''''''''
  84. ' SetInfo flushes the attributes in cache to disk
  85. ' Rien dans cette partie ne doit etre changé
  86. '''''''''''''''''''''''''''''''''''''''''''''''''
  87. adsUser.SetInfo
  88. '''''''''''''''''''''''''''''''''''''''''''''''''''''''
  89. ' Efface adsUser pour le prochain utilisateur
  90. ' Rien dans cette partie ne doit etre changé
  91. '''''''''''''''''''''''''''''''''''''''''''''''''''''''
  92. Set adsUser = Nothing
  93. Wend                                   ' END OF LOOP
  94. ''''''''''''''''''''''''''''''''''''''''''''''''
  95. ' Ferme le fichier texte
  96. ' Rien dans cette partie ne doit etre changé
  97. ''''''''''''''''''''''''''''''''''''''''''''''''
  98. tsTextFile.Close
  99. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  100. ' Boite de dialogue finie
  101. ' Rien dans cette partie ne doit etre changé
  102. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  103. wscript.echo "Utilisateurs créés.", Chr(10),Chr(10),"Cliquez pour finir."


 
 
Je pense avoir trouvé un code sur un autre script:
 
 

Code :
  1. set oGroup=objGroup.Create("Group","cn="&strGroupes)
  2.   oGroup.Add objStudent.AdsPath
  3.   set oGroup=Nothing


 
Vous pensez que c possible de l'insérer ??
 
 
Merci en tt cas pour votre interet sur mon probleme !
 
 
lim

Reply

Marsh Posté le 13-10-2004 à 15:18:06    

Ma modif fausse est ligne 115,
Pour knives, mon premier exemple avait été simplifié pour montrer le foncionnement.

Reply

Marsh Posté le 13-10-2004 à 15:35:43    

phew... Galere toutes ces quotes pour lire le script :o
tu devrais utiliser un fichier csv ou excel plutot que txt, c'est plus pratique.
 
Sinon je dirais qu'il faut rajouter ce qu'a dit initiators avant le Wend. En mettant bien les objects qu'il faut pour le user et le group.

Reply

Marsh Posté le 13-10-2004 à 15:49:36    

knives a écrit :

+1
Par contre ca n'est pas suffisant juste le nom du group et du user, il faut indiquer leurs DN respectifs.


 
Pas juste le nom, le "chemin" vers les objets groupe et user.
 

knives a écrit :

+1
Et .put a la place de .add peut etre, a voir.


 
Pour du NT4 ca doite etre comme je l'ai ecris. Pour du 2000 et au dessus c'est peut etre different, je sais plus et j'ai pas vraiment utilise.

Reply

Marsh Posté le 13-10-2004 à 15:53:30    

T'es sur que ca marche ton
 
adsUser.homeDrive = "Z:"
 
Il me semble que c'etait HomeDirDrive

Reply

Marsh Posté le 13-10-2004 à 16:12:30    

L'ensemble du script fonctionne parfaitement, il est utilisé.
Ce que je veux rajouter et de mettre les utilisateurs membres du groupe "eleves".
 
Je pense rapprocher du but avec ça:
 
 
Set myGroup = GetObject("LDAP://serveur.ecole.com/CN=eleves,OU=eleves,OU=ecole,DC=ecole,DC=com" & strGroupes)  
myGroup.Put = arrRecord(2)
myGroup.SetInfo
 
En noir c ce dont je ne suis pas sur du tout .....

Reply

Marsh Posté le 13-10-2004 à 16:12:30   

Reply

Marsh Posté le 13-10-2004 à 21:53:21    

En vrac, voila ce que j'utilise depuis 2 ans.
 
 
'ajout de cet utilisateur au groupe "groupe_classe" de l'OU "classes"
 
set grp = GetObject("LDAP://CN=groupe_classe_" & groupe_classe & ",OU=classes,OU=collège lycée,DC=etablissement,DC=fr" )
 
grp.Add "LDAP://CN=" & username & ",OU=OU_" & groupe_classe & ",OU=classes,OU=collège lycée,DC=etablissement,DC=fr"


Message édité par c_moa le 13-10-2004 à 21:54:11
Reply

Marsh Posté le 14-10-2004 à 10:36:45    

SUPER CA MARCHE !!!!!!
MERCI C_MOI !!!!!
 
 
Bon alors je donne le script entier pour ceux à qui ça interresse:
 
 
Utilité:
Dans Active Directory, permet de créer des comptes utilisateurs à partir d'une liste en fichier texte.
Ca integre le nom (sn), le prénom(GivenName), le nom de session (sAMAccountName et userPrincipalName) et integre l'utilisateur dans un groupe, je monte aussi un lecteur Z: (homeDirectory et homeDrive).
 
Description de l'exemple:
C'est une liste d'élèves à insérer dans une OU "eleves" qui est dans une OU "ecole".
le script est à insérer dans c:\ANSI\
La liste des élèves doit etre dans le meme répertoire, il sera nommé eleves.txt.
La liste des élève doit etre sur la forme:

Nom:Prenom:nom de session


Chaque ligne correspond à un compte.
 
script:

Code :
  1. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  2. ' Script pour créer les utilisateurs dans Active Directory
  3. '
  4. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  5. wscript.echo "Le script commence. Cliquez OK pour continuer."
  6. DIM arrRecord
  7. Const ForReading = 1
  8. ''''''''''''''''''''''''''''''''''''''''''''''''
  9. ' Determine le chemin LDAP de votre domaine
  10. ' Rien dans cette partie ne doit etre changé
  11. ''''''''''''''''''''''''''''''''''''''''''''''''
  12. Set Root = GetObject("LDAP://RootDSE" )
  13. DomainPath = Root.Get("DefaultNamingContext" )
  14. ''''''''''''''''''''''''''''''''''''''''''''''''
  15. ' Obtenez l'indicateur à votre objet de domaine
  16. ' Rien dans cette partie ne doit etre changé
  17. ''''''''''''''''''''''''''''''''''''''''''''''''
  18. Set Domain = GetObject("LDAP://" & DomainPath)
  19. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  20. ' Pour indiquer l'OU où mettre les utilisateurs
  21. '
  22. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  23. Set ou_HR = GetObject("LDAP://OU=eleves,OU=ecole, " & DomainPath)
  24. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  25. ' L'objet du fichier systeme est votre point d'entrée dans le fichier système
  26. ' Rien dans cette partie ne doit etre changé
  27. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  28. set fso = CreateObject ("Scripting.FileSystemObject" )
  29. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  30. ' Pour retrouver le fichier texte dans C:\ADSI\eleves.txt
  31. ' Le nom et l'emplacement peuvent etre modifiés
  32. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  33. Set tsTextFile = fso.OpenTextFile ("C:\ADSI\eleves.txt", ForReading, False)
  34. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  35. ' Commence à lire le fichier rentré, début de la boucle
  36. '
  37. ' Lit une ligne du fichier
  38. '
  39. ' Rien dans cette partie ne doit etre changé
  40. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  41. While Not tsTextFile.AtEndOfStream    ' START OF LOOP
  42. strRecord = tsTextFile.ReadLine
  43. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  44. ' Découpe la ligne en plusieurs segments délimités par le délimiteur spécifié
  45. ' (Vous pouvez changer le délimiteur)
  46. ' mettre chaque segment dans une rangée nommée arrRecord
  47. ' Le premier segment est référencé par arrRecord(0)
  48. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  49. arrRecord = Split (strRecord, ":" )
  50. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  51. ' Création de l'utilisateur dans l'OU
  52. ' Rien dans cette partie ne doit etre changé
  53. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  54. Set adsUser = ou_HR.Create("user", "CN=" & arrRecord(2))
  55. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  56. ' Définit les sAMAccountName et userPrincipalName
  57. ' attribués pour chaque utilisateur
  58. ' Rien dans cette partie ne doit etre changé
  59. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  60. adsUser.Put "sAMAccountName",  arrRecord(2)
  61. adsUser.Put "userPrincipalName", arrRecord(2)
  62. adsUser.SetInfo
  63. ''''''''''''''''''''''''''''''''''''''''''''''''''''''
  64. ' Active le compte qui est désactivé par défaut
  65. '
  66. ' Rajoute les attributs aditionnés listés dans le fichier texte
  67. '
  68. ' Dans cet exemple, l'attribut de description sera
  69. ' rempli dans le second (1) segment
  70. ' et l'attribut du nom affiché est pris du troisième
  71. ' (2) segment
  72. '
  73. ' Changez cette partie d'attributs add/change
  74. ' rentrés dans le fichier texte
  75. ''''''''''''''''''''''''''''''''''''''''''''''''''''''
  76. adsUser.AccountDisabled = False
  77. adsUser.sn = arrRecord(0)
  78. adsUser.GivenName = arrRecord(1)
  79. adsUser.homeDirectory = "\\serveur\partages"
  80. adsUser.homeDrive = "Z:"
  81. '''''''''''''''''''''''''''''''''''''''''''''''''
  82. 'ajout de cet utilisateur au groupe "eleves" de l'OU "eleves"
  83. '''''''''''''''''''''''''''''''''''''''''''''''''''''
  84. set grp = GetObject("LDAP://CN=eleves,OU=eleves,OU=ecole,DC=ecole,DC=com" )
  85. grp.Add "LDAP://CN="&arrRecord(2)&",OU=eleves,OU=ecole,DC=ecole,DC=com"
  86. '''''''''''''''''''''''''''''''''''''''''''''''''
  87. ' SetInfo flushes the attributes in cache to disk
  88. ' Rien dans cette partie ne doit etre changé
  89. '''''''''''''''''''''''''''''''''''''''''''''''''
  90. adsUser.SetInfo
  91. '''''''''''''''''''''''''''''''''''''''''''''''''''''''
  92. ' Efface adsUser pour le prochain utilisateur
  93. ' Rien dans cette partie ne doit etre changé
  94. '''''''''''''''''''''''''''''''''''''''''''''''''''''''
  95. Set adsUser = Nothing
  96. Wend                                   ' END OF LOOP
  97. ''''''''''''''''''''''''''''''''''''''''''''''''
  98. ' Ferme le fichier texte
  99. ' Rien dans cette partie ne doit etre changé
  100. ''''''''''''''''''''''''''''''''''''''''''''''''
  101. tsTextFile.Close
  102. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  103. ' Boite de dialogue finie
  104. ' Rien dans cette partie ne doit etre changé
  105. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  106. wscript.echo "Eleves créés.", Chr(10),Chr(10),"Cliquez pour finir."


 
 
A la prochaine !
 
lim


Message édité par limvachlapdinos le 14-10-2004 à 10:37:54
Reply

Marsh Posté le 24-02-2005 à 14:04:19    

... les détails complets de la manipulation sont en PDF ici:
http://ReseauActif.free.fr
 
- Administration: création de comptes, gestion des mots de passe  
- Création de comptes utilisateurs en bloc  
- Script VBS pour création de comptes en bloc  
- Gestion des quotas  
- Système de sauvegarde  
- Exemple de création complète d'un domaine avec serveur de fichiers  
 
lim

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed