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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 "ProvidersDSOObject" 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
"Vincent" <Vincent@discussions.microsoft.com> a écrit dans le message
de news:B81E05A0-14BC-46BC-AE76-51BE27CBC523@microsoft.com
| 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 "ProvidersDSOObject"
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))
"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 "ProvidersDSOObject" 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
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
"Vincent" <Vincent@discussions.microsoft.com> a écrit dans le message
de news:700BE3A1-108E-43FA-B155-0EB55FBCA4B1@microsoft.com
| 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)
"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)