Benjyii
Messages postés21Date d'inscriptionjeudi 12 mai 2011StatutMembreDernière intervention 9 juin 2011
-
26 mai 2011 à 17:21
Benjyii
Messages postés21Date d'inscriptionjeudi 12 mai 2011StatutMembreDernière intervention 9 juin 2011
-
27 mai 2011 à 09:16
Bonjour,
Mon programme qui ajoute des utilisateurs dans active directory a partir d'un fichier csv boucle je ne sais pas pourquoi ...
' recuperation des fichier csv
Dim oFSO, oTS, sOU, sGrp, WshShell, societe,connect,grpU,prflU,UO, CSV, RF, WF,i,j,k
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oUsers = oFSO.OpenTextFile("C:\Documents and Settings\Administrateur\Mes documents\Users.csv")
Set WshShell = WScript.CreateObject("WScript.Shell")
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
Set WF = oFSO.CreateTextFile("C:\Documents and Settings\Administrateur\Mes documents\Temp.csv")
'Boucle de lecture des utilisateurs dans le fichiers
j=0
Do Until oUsers.AtEndOfStream
On Error Resume Next
sLine = oUsers.ReadLine
j=j+1
Loop
msgbox j
oUsers.close
For k=0 to j
Set oUsers = oFSO.OpenTextFile("C:\Documents and Settings\Administrateur\Mes documents\Users.csv")
sLine = oUsers.ReadLine
on Error Resume Next
sData = Split(sLine,",")
sPrenom=sData(0)
sNom=sData(1)
sFullName= sData(0) & " " & sData(1)
sTitre=sData(2)
sService=sData(3)
sSociete=sData(4)
sLogin=left(sPrenom,2)& left(sNom, 6)
sLogin=LCase(sLogin)
Set oSites =oFSO.OpenTextFile("C:\Documents and Settings\Administrateur\Mes documents\Sites.csv")
'Boucle des sites et leurs propriétés
Do Until oSites.AtEndOfStream
CSV = oSites.ReadLine
on Error Resume Next
ligne = Split(CSV,",")
societe=Ligne(0)
connect=Ligne(1)
grpU=Ligne(2)
prflU=Ligne(3)
UO=Ligne(4)
Location=Ligne(5)
'Structure alternative pour les bonnes OU
if Location = sSociete Then
' Référence du domaine et des OU de création des comptes
Set objOU = GetObject("LDAP://OU=Utilisateurs, OU=" & UO & ", DC=test, DC=loc")
sOU = ",OU=Utilisateurs, OU=" & UO & ", DC=test, DC=loc"
if UO="TC GIE Pasquier" or UO="CV GIE Pasquier" Then
UO="Brioche Pasquier Groupe"
sGrp = "cn=" & grpU &" ,OU=Services, OU=Brioche Pasquier Groupe, DC=test, DC=loc"
Else
sGrp = "cn=" & grpU & ",OU=Services, OU= " & UO & ", DC=test, DC=loc"
End if
Set objGroup = GetObject("LDAP://" & sGrp)
' creation du compte utilisateur avec le paramètre
Set objUser = objOU.Create("user", "cn=" & sFullName )
objUser.Put "sAMAccountName",sLogin
objUser.Put "userPrincipalName",sLogin & "@test.loc"
objUser.Put "givenName", sPrenom
objUser.Put "sn", sNom
objUser.Put "displayName", sPrenom & sNom
objUser.Put "mail", LCase(sPrenom) & "." & LCase(sNom) & "@pasquier.fr"
objUser.Put "title", sTitre
objUser.Put "department", sService
objUser.Put "company", sSociete
objUser.TerminalServicesProfilePath = "\" & prflU & "\profils$" & sLogin
objUser.TerminalServicesHomeDrive = "H:"
objUser.TerminalServicesHomeDirectory = "\" & prflU & "\users" & sLogin
objUser.Put "scriptPath", connect
objUser.SetPassword "MOTDEPAS"
objUser.SetInfo
'Création du dossier de l'utilisateur
strHome= "\" & prflU & "\users" & sLogin
oFSO.CreateFolder(strHome)
'Attribue les droits controle total pour l'utilisateur et les admins du domaine et enleve le groupe Tout le monde
WshShell.run "cacls " & strHome & " /T /E /G " & sLogin & ":F",2,true
WshShell.run "cacls " & strHome & " /T /E /C /G ""Administrateurs""" & ":F",2,true
WshShell.run "cacls " & strHome & " /T /E /C /R ""Tout le monde""",2,true
'Activation du control a distance decochage demander l'autorisation utilisateur
objUser.EnableRemoteControl = 2
objUser.SetInfo
' Activation du compte
Set objUser = objOU.GetObject("LDAP://cn=" & sPrenom & sNom )
objUser.AccountDisabled = False
' Le mot de passe n'expire jamais
intUAC = objUser.Get("userAccountControl")
objUser.Put "userAccountControl", intUAC XOR ADS_UF_DONT_EXPIRE_PASSWD
objUser.SetInfo
' Ajout d'utilisateur dans un groupe
objGroup.add("LDAP://cn=" & sFullName & sOU)
objGroup.SetInfo
if sSociete <> "TC GIE Pasquier" and sSociete <> "CV GIE Pasquier" Then
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.run "ListeGroup.html",3,True
End if
oUsers.close
Set RF = oFSO.OpenTextFile("C:\Documents and Settings\Administrateur\Mes documents\Users.csv",1,0)
i=0
Do Until RF.AtEndOfStream
sLine = RF.ReadLine
if i>0 Then
WF.WriteLine (sLine)
End if
i=i+1
Loop
msgbox i
if i=0 Then
WF.WriteLine ("")
End if
Dim T
Set T = oFSO.OpenTextFile("C:\Documents and Settings\Administrateur\Mes documents\Temp.csv",1,0)
Set WF = oFSO.OpenTextFile("C:\Documents and Settings\Administrateur\Mes documents\Users.csv",2,0)
Do Until T.AtEndOfStream
sLine = T.ReadLine
WF.WriteLine (sLine)
Loop
oSite.close
RF.Close
WF.Close
T.Close
end if
Loop
Next
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 26 mai 2011 à 21:15
Dans ta première boucle, tu lis chaque ligne du fichier, mais tu la stocke dans la même variable. Normal ?
Comment est dimensionne sListe ?
Supprime absolument tous les "On Error Resume Next". C'est un très mauvaise habitude qui masque les problèmes du programme.
C'est un instruction importante qui est souvent prise pour une facilité.
A n'utiliser uniquement lorsque la ligne qui va suivre à des risques de poser problème (*), mais de toute façon, dès le problème passé, il faut reprendre une gestion efficace des erreurs, la plus simple est "On Error Goto 0" qui provoquera une MsgBox présentant l'erreur rencontrée.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Benjyii
Messages postés21Date d'inscriptionjeudi 12 mai 2011StatutMembreDernière intervention 9 juin 2011 26 mai 2011 à 17:52
Pour info,
dans mon fichier Users.csv
je retrouve :
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
Vert,Blanc,Noir,Bleu,TC GIE Pasquier
qui n'arrete pas d'augmenter si je ne kill pas le processus..
Mon fichier Users du départ:
Benjamin,Turpault,Assistant,Informatique,Patisserie Pasquier Etoile
Rouge,Noir,Directeur,bouu,Brioche Pasquier Aubigny
Vert,Blanc,Noir,Bleu,TC GIE Pasquier