déchiffrage et correction d'un VBScript.[insertion de valeurs dans une BDD]
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...:roll:
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:
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:
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:
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