Bonjour à tous !

J'ai demandé un jour à quelqu'un si c'etait possible d'insérer des valeurs, contenues dans un document texte, dans une base de données a partir d'un fichier VBscript...il m'a dit oui, c'est facile, tu fais ca, ca, ca hop tu vois, je test ca marche tiens prends le script cadeau hahaha...

Au final, j'ai rien compris, et je me retrouve avec un script, dont la finalité pourrait etre pour moi très très interessante, mais qui ne marche pas.

Le projet auquel ce script servirais est un vrai casse-tête, donc si vous aimez les sujets d'examen type Licence VBScript ceinture marron option jenmangetoulesjouroptidèj' vous pourrez sans doute m'aider !

Les scripts que j'ai élaboré moi-même sont vraiment simples, vous n'aurez donc pas de difficulté a les comprendre, j'essayerai cependant d'etre le plus clair possible afin d'éviter que vous vous retrouviez...heu...dans le même cas que moi actuellement...


Le principe est le suivant...dans un premier temps j'utilise un premier fichier VBscript pour inserer des noms et des prénoms (dont la concaténation prénom.nom donne un pseudo) dans un fichier pseudos.txt stocké a la racine.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
dim rep, nom, prenom
rep = 6
 
'création de l'objet objfso  permettant de lire les fichiers
set objfso = createobject("scripting.filesystemobject")
   'si le fixhier contenant les utilisateurs existe, on l'ouvre, sinon on le crée
   if       objfso.fileexists("c:\pseudos.txt") then
      	    set file = objfso.opentextfile("c:\pseudos.txt", 8) 
   else
	    set file = objfso.createtextfile("c:\pseudos.txt",FALSE)
   end if
 
   do while rep = 6
            nom = inputbox("Quel est le nom du nouvel utilisateur ?","ajout de nouvel utilisateur")
 
            ' contrôle de saisie 
	    if nom = "" then
	    	msgbox("annulation de l'utilisateur, ou saisie incorrecte")
	    	wscript.quit
	    end if
 
            prenom = inputbox("Quel est le prénom du nouvel utilisateur ?","ajout de nouvel utilisateur")
 
	    ' contrôle de saisie
	    if prenom = "" then
	    	msgbox("annulation de l'utilisateur, ou saisie incorrecte")
	    	wscript.quit
	    end if
 
	    file.writeline(prenom&"."&nom)
	    rep = msgbox("voulez-vous rentrer un autre utilisateur ?",292,"ajout de nouvel utilisateur")
 
	    'contrôle de saisie
	    if rep = "" then
	    	msgbox("annulation de l'utilisateur")
	    	wscript.quit
	    end if
 
   loop
 
file.close
msgbox("Fichier mis à jour dans c:\pseudos.txt avec succès ! Le mot de passe par défaut est toto")
Ensuite, un deuxieme fichier VBscript, mis dans les taches planifiées s'executant tous les soirs a 18h, insère les valeurs dans un annuaire active directory. J'ai mis DOMAINE pour le nom de domaine, NOM_COMPLET_ORDI pour le nom complet, pour que le script soit plus comprehensible

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
On Error Resume Next
domaine = "dc = DOMAINE, dc = DOMAINE, dc = DOMAINE"
uo = "UNITE D ORGANISATION"
set objfso = createobject("scripting.filesystemobject")
 
set objuser = getobject("LDAP://"& domaine)
Set objOU = objuser.Create("organizationalUnit", "ou=UNITE DORGANISATION")
objOU.SetInfo
 
 
err.number = 0
set objuser = getobject("LDAP://ou=" & uo & "," & domaine)
set wshshell = wscript.createobject("wscript.shell")
 
   if       objfso.fileexists("c:\pseudos.txt") then
      	    set file = objfso.opentextfile("c:\erreurs.txt", 8) 
   else
	    msgbox("Aucun nouvel utilisateur n'a été ajouté depuis la dernière mise à jour !")
	    wscript.quit
   end if
 
set fich = objfso.opentextfile("c:\pseudos.txt", 1)
 
do until fich.atendofstream
	 username = fich.readline
	 bout = split(username, ".")
	 set user = objuser.create("user", "cn=" & username)
	 user.samaccountname = username
	 user.sn = bout(1)
	 user.givenname = bout(0)
	 user.setinfo
	 user.accountdisabled = FALSE
	 user.setpassword "toto"
	 user.put "pwdlastset", 0
	 user.setinfo
 
if err.number <> 0 then
 
   if       objfso.fileexists("c:\erreurs.txt") then
      	    set file = objfso.opentextfile("c:\erreurs.txt", 8) 
   else
	    set file = objfso.createtextfile("c:\erreurs.txt",FALSE)
   end if
 
   file.writeline(now&" Utilisateur "&username&" déjà existant ! Son mot de passe sera toto")
   erreurs = erreurs + 1
   err.number = 0
end if
 
loop
 
fich.close
 
Set del = objfso.GetFile("c:\pseudos.txt")
del.delete
 
if erreurs <> 0 then
   rep = msgbox("Attention ! "&erreurs&" erreurs ont été générées. Voulez-vous consulter le fichier c:\erreurs.txt pour en connaitre les raisons ?", 308, "Mise à jour d'Active Directory")
end if
 
if rep = 6 then
   wshshell.Run "c:\erreurs.txt", 1, true
end if
et enfin, que je pourrai une fois corrigé rajouter dans ce bout de code, le script d'exemple que m'a filé l'autre zozo, a partir d'une table créee dans phpmyadmin qui s'appelle test1

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim cnx
Dim valeur
Set cnx = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
Set fso = CreateObject("scripting.fileSystemObject")
Set objet = fso.OpenTextFile(".\toto.txt", 8, true)
cnx.ConnectionString = "DSN=localhost;"
cnx.Open
	' cnx.execute "INSERT INTO test1 (chp2, chp3, chp4) VALUES ('val1', 'val2', 'val3');"
rs.Open "SELECT * FROM test1;", cnx
while not rs.eof 
valeur = ("chp1 : " & rs("chp1") &  vbcrlf & " chp2 : " & rs("chp2") & vbcrlf & _ 
"chp3 : " & rs("chp3") &  vbcrlf & " chp4 : " & rs("chp4") )
	' cnx.execute "UPDATE test1 SET chp3 = 'New Value' WHERE chp1=" & rs("chp1") & ";" 
objet.write (valeur & vbcrlf)
rs.movenext
wend 
rs.close
	'object.close
set objet = nothing
set fso = nothing
set rs = nothing
set cnx = nothing
cnx.close

L'ultime but de ce code est que j'obtienne une table X avec 3 champs : Nom, prénom et Pseudo, sachant que pseudo = prénom.nom


Je vous remercie sincèrement de l'attention que vous portez pour mon problème !

Bonne journée !

Michael