OVH Cloud OVH Cloud

Selection OU

2 réponses
Avatar
Vincent
Bonjour,

J'ai un script VBS avec une InputBox via laquelle les admins doivent rentrer
le nom d'une OU existante (à la racine du domaine). Est il possible de
remplacer cette InputBox par une liste prédéfinie (contenant la liste des
OU), ou bien en explorant la racine du domaine et sélectionnant l'OU ?

Merci

Vincent

2 réponses

Avatar
Gilles LAURENT
"Vincent" a écrit dans le message
de news:
| Bonjour,

Bonjour,

| J'ai un script VBS avec une InputBox via laquelle les admins doivent
| rentrer le nom d'une OU existante (à la racine du domaine). Est il
| possible de remplacer cette InputBox par une liste prédéfinie
| (contenant la liste des OU), ou bien en explorant la racine du
| domaine et sélectionnant l'OU ?

Ci-dessous un script VBScript permettant d'afficher de manière dynamique
la liste des OU de premier niveau. Les administrateurs auront la
possibilité de sélectionner une OU en entrant son index (1 à N) :

--- Coupez ici ---

Option Explicit

' déclaration des variables
Dim oCon, oCmd, oRs
Dim strPrompt
Dim arrOU
Dim i, n

' initialisation des objets
Set oCon=CreateObject("adodb.connection")
oCon.Open "Provider­sDSOObject"
Set oCmd=CreateObject("adodb.command")
oCmd.ActiveConnection=oCon

' définition de la requête ldap
oCmd.CommandText="<LDAP://" & GetObject("LDAP://RootDSE"). _
Get("defaultNamingContext") & ">;" & _
"(&(objectCategory=organizationalUnit));" & _
"distinguishedname;onelevel"

' exécution de la requête
set oRs=oCmd.Execute()

' lecture des enregistrements
arrOU=oRs.GetRows()

' création du prompt
For i=1 To oRs.RecordCount
strPrompt = strPrompt & "[" & i & "] " & _
arrOU (0, i - 1) & VBCrLf
Next

' choix de l'OU
do
n = InputBox (strPrompt, "Choix de l'OU")
If n = "" Then n = 0
Loop Until (Asc(n) > Asc("0") And Asc(n) < Asc(i))

' affichage du dn de l'OU sélectionnée
WScript.Echo arrOU(0,CInt (n - 1))

--- Coupez ici ---

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Gilles LAURENT
"Vincent" a écrit dans le message
de news:
| Merci Gilles ! Par contre je ne comprends pas pourquoi ça ne
| fonctionne pas avec plus de 8 OUs. A partir de 9 (j'en ai en fait
| 14), le script boucle sur l'inputbox ! Avez vous explication à cette
| limitation ?

Oui, il y a une anomalie au niveau de l'évaluation de l'index. Il est
nécessaire de remplacer la boucle du choix de l'OU par le code suivant :

' choix de l'OU
Do
n = InputBox (strPrompt, "Choix de l'OU")
If Not IsNumeric (n) Then n = 0
Loop Until (CInt(n) > 0 And CInt(n) < i)

--
Gilles LAURENT
http://glsft.free.fr