Je suis entrain de galérer depuis plusieurs jours à mon stage. J'essaie de créer un script en .vbs qui permette de créer des comptes depuis une feuille Excel.
Ca marche quand je mets l'OU de destination en "dure", mais quand j'essaie de définir l'OU de création de l'utilisateur en fonction de l'OU de destination inscrite dans Excel, ça ne marche plus.
Je suis dans un environnement de test et j'ai le droit de créer des users seulement dans une seule OU :-D
Voici mon script (j'ai utilisé les sources d'un certain Guy Thomas que j'ai trouvé en ligne car je n'ai jamais fait de script vbs auparavant).
CODE :
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell, objOU
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD, strDisplayName, strUserUPN, strDescription, strOUser
strOU = "DC=branch,DC=lab,DC=ar*,DC=fr"
strSheet = "C:\Documents and Settings\Marion\Desktop\ScriptCreation\UserVersion2.xlsx"
'Lier vers AD le conteneur
Set objRootLDAP = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://" & strOU)
'Ouvre la feuille de calcul Excel
Set objExcel = CreateObject("Excel.Application")
Set objSpread = objExcel.Workbooks.Open(strSheet)
intRow = 3 'Car row 1 est souvent les titres
' Boucle création des comptes
Do Until objExcel.Cells(intRow,1).Value = ""
strOUser = (Trim(objExcel.Cells(intRow, 12).Value) & strOU)
strSam = Trim(objExcel.Cells(intRow, 1).Value)
strCN = Trim(objExcel.Cells(intRow, 3).Value)
strLast = Trim(objExcel.Cells(intRow, 5).Value)
strFirst = Trim(objExcel.Cells(intRow, 6).Value)
strPWD = Trim(objExcel.Cells(intRow, 11).Value)
strDisplayName = Trim(objExcel.cells(intRow, 4).value)
strUserUPN = Trim(objExcel.cells(intRow, 2).value)
strDescription = Trim(objExcel.cells(intRow, 7).value)
MsgBox strOUser 'pour vérifier que j'ai le bon chemin et c'est OK, la bulle s'affiche
' Build the actual User from data in strSheet.
Set objOU = GetObject("LDAP://" & strOUser) < ne fonctionne pas
Set objUser = objContainer.Create("User", "cn=" & strCN)
objUser.sAMAccountName = strSam
objUser.givenName = strFirst
objUser.sn = strLast
objUser.Description = strDescription
objUser.DisplayName = strDisplayName
objUser.UserPrincipalName = strUserUPN
objUser.SetInfo < bug à cette ligne là. Il me dit que je n'ai pas les droits alors que je pointe la création des users sur l'OU surlaquelle j'ai les droits de créations.
' Separate section to enable account with its password
objUser.userAccountControl = 512
objUser.pwdLastSet = 0
objUser.SetPassword strPWD
objUser.SetInfo
MsgBox strSam & "created"
intRow = intRow + 1
Loop
objExcel.Quit
WScript.Quit
Voilà... si vous avez des idées pour m'aider... J'ai plus ou moins compris tout le code que j'ai écrit (malgré quelque copié coller je l'avoue).
Est-ce que les droits me sont refusés parce que je chemine OU par OU et que du coup ya un endroit où il me refuse l'accès ?
Pour info l'erreur obtenu au lancement du script :
General access denied error
code : 80070005
Source : Active Directory
Merci :-)
P.S : On ne se moque pas si la réponse était toute simple ! J'ai pas mal cherché pour en arriver là déjà haha
Modifié par Hana, 03 août 2011 à 16:11.












