Bonjour,

Je suis en train de faire un petit script, qui m'importe les utilisateurs qui sont dans un csv, dans l'Active Directory.

Ce script fonctionne, toutefois je veux rajouter un UID, qui quand on l'active via l'interface graphique sous l'Active Directory, prend le 1er numéro de libre.

Etant donné que sous Linux, l'UID détient les droits d'utilisateur, il ne faut évidemment pas que deux utilisateurs ait le même.

Je pouvais, grâce a mon script, activer l'UID, mais quand je créais plusieurs utilisateurs, ils avaient tous le même UID.

J'ai donc mis une petite boucle au point, qui est censé checker tous les utilisateurs afin de voir quel est le 1er UID libre.

Pour des raisons pratique, mes UID commence à 10000.

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
 
Option Explicit
 
'déclaration des variables
Dim fso
Dim fichier
Dim Ligne
dim intPwdValue 
Dim v
dim valeur
valeur=10000
dim vvaleur
dim uidlibre
intPwdValue = 0 
Dim complet, account, login, nom, prenom, display, password
 
'16 détermine le fichier à ouvrir
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fichier = fso.OpenTextFile("d:\testscript\liste.csv", 1)
 
'boucle qui lis chaque ligne du fichier et qui stocke les informations dans un tableau
Do While (Not fichier.AtEndOfStream)
	Ligne = fichier.Readline
	v = Split(Ligne, ";")
	Cree_Utilisateur v(0), v(1), v(2), v(3), v(4), v(5), v(6), v(7)
Loop
 
'fonction qui permet de créer l'utilisateur sous Active directory
Function Cree_Utilisateur(gid, account, groupeunix, nom, prenom, display, password, mail)
 
   'determine le chemin LDAP
Dim Root
Dim DomainPath
Set Root = GetObject("LDAP://DC=dom,DC=aine,DC=local")
DomainPath = "DC=dom,DC=aine,DC=local"
 
'36 Indique l'OU de l'utilisateur
Dim chemin
Set chemin = GetObject("LDAP://OU=peuple," & DomainPath)
 
'40 Boucle qui check l'UID dispo
objRecordSet.MoveFirst
Do while objRecordSet.EOF
 
	Set objUser = GetObject(objRecordSet.Fields("AdsPath").Value)
	uid=user.uidnumber
		If user.uidnumber = valeur Then
		valeur = valeur +1
		end if
'49
	objRecordSet.MoveNext
loop
msgbox("la commande s'est terminé correctement!")
C'est la boucle à la fin qui ne fonctionne pas, je l'ai pourtant recopié d'un autre script d'extraction de donnée qui fonctionnait nickel (la même boucle, extraction et condition différentes).

Je compte mettre le script en entier à l'endroit qui correspondra le mieux, quand il sera terminé.

Merci d'avance si certaines personnes peuvent m'aider.

PS : j'ai testé pas mal de modif sur la boucle avant de venir ici, en fait elle est censé checker tous les utilisateurs, si elle trouve que le nombre qu'elle teste est pris, alors +1 et objet suivant, sinon objet suivant, et à la fin du fichier, on est censé avoir dans la variable un UID libre. (j'espère ne pas me trompe).