Afin d'effectuer des traitements sur des comptes utilisateurs dans l'AD, je
souhaite parcourir l'arborescence des différentes OU.
Dès lors que j'ai connaissance (dans le programme) du nom complet de la
"branche", je sais effectuer le traitement.
Ma problèmatique est de déterminer mon arborescence
Du style une fonction, qui prends comme paramètre d'entrée le nom de mon OU
racine, et qui parcours toutes les OU "enfants".
(je contourne actuellement cette partie en fournissant un fichier .csv
contenant l'ensemble des OU existantes - cependant ce script n'est pas
spécialement souple
car l'arborescence AD évolue - et je pense qu'il doit bien y avoir une
solution plus efficace)
Merci pour vos idées ( pas vu sur script-center /)
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
Major TOM
J'ai fait ça, ça marche mais je suis sur qu'il y a mieux
Cordialement
Thierry
'<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<> Function CreateArray(TypeSearch) 'Description : '------------ 'Entrées : 'TypeSearch => Computers ou Users ou Containers ou OUs ou Domains ... 'Sorties : 'Retourne un tableau avec le type d'objet recherché" Dim intSize Dim objTypeSearch, objTypeSearch1, objTypeSearch2, objTypeSearch3 Dim objContainer Dim objOUs, objOUsChildren2, objOUsChildren3
Select Case TypeSearch Case "Containers" '>>> Liste des containers depuis la racine du domaine intSize = 0 'Remplissage des Containers dans un tableau Set objContainer = GetObject("LDAP://" & strDefaultDN) For Each objTypeSearch in objContainer If Left(objTypeSearch.Name, 3) = "CN=" Then ReDim Preserve arrTypeSearch(intSize) arrTypeSearch(intSize) = objTypeSearch.Name intSize = intSize + 1 End If Next '<<<
Case "OUs" intSize = 0 '>>> Liste des OUs depuis la racine du domaine Set objOUs = GetObject("LDAP://" & strDefaultDN) For Each objTypeSearch1 in objOUs If objTypeSearch1.Class = "organizationalUnit" Then ReDim Preserve arrTypeSearch(intSize) arrTypeSearch(intSize) = objTypeSearch1.Name intSize = intSize + 1 '>>> Liste des OUs enfants 1er niveau Set objOUsChildren2 = GetObject("LDAP://" & arrTypeSearch(intSize - 1) & _ "," & strDefaultDN) For Each objTypeSearch2 in objOUsChildren2 If objTypeSearch2.Class = "organizationalUnit" Then ReDim Preserve arrTypeSearch(intSize) arrTypeSearch(intSize) = objTypeSearch2.Name & "," & _ objTypeSearch1.Name intSize = intSize + 1
'>>> Liste des OUs enfants 2ème niveau Set objOUsChildren3 = GetObject("LDAP://" & arrTypeSearch(intSize - 1) & _ "," & strDefaultDN) For Each objTypeSearch3 in objOUsChildren3 If objTypeSearch3.Class = "organizationalUnit" Then ReDim Preserve arrTypeSearch(intSize) arrTypeSearch(intSize) = objTypeSearch3.Name & "," & _ objTypeSearch2.Name & "," & _ objTypeSearch1.Name intSize = intSize + 1 End If Next '<<<
End If Next '<<<
End If Next '<<<
Case "Domains" strTypeSearch = "" Case "Groups" strTypeSearch = "" Case "Users" strTypeSearch = "" End Select CreateArray = arrTypeSearch End Function
--
Par avance, merci de votre aide.
Thierry "ESA" a écrit dans le message de news:
Bonjour,
Afin d'effectuer des traitements sur des comptes utilisateurs dans l'AD, je souhaite parcourir l'arborescence des différentes OU.
Dès lors que j'ai connaissance (dans le programme) du nom complet de la "branche", je sais effectuer le traitement. Ma problèmatique est de déterminer mon arborescence
Du style une fonction, qui prends comme paramètre d'entrée le nom de mon OU racine, et qui parcours toutes les OU "enfants".
(je contourne actuellement cette partie en fournissant un fichier .csv contenant l'ensemble des OU existantes - cependant ce script n'est pas spécialement souple car l'arborescence AD évolue - et je pense qu'il doit bien y avoir une solution plus efficace)
Merci pour vos idées ( pas vu sur script-center /)
Bon code
Merci
Manu
J'ai fait ça, ça marche mais je suis sur qu'il y a mieux
Cordialement
Thierry
'<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>
Function CreateArray(TypeSearch)
'Description :
'------------
'Entrées :
'TypeSearch => Computers ou Users ou Containers ou OUs ou Domains ...
'Sorties :
'Retourne un tableau avec le type d'objet recherché"
Dim intSize
Dim objTypeSearch, objTypeSearch1, objTypeSearch2, objTypeSearch3
Dim objContainer
Dim objOUs, objOUsChildren2, objOUsChildren3
Select Case TypeSearch
Case "Containers"
'>>> Liste des containers depuis la racine du domaine
intSize = 0
'Remplissage des Containers dans un tableau
Set objContainer = GetObject("LDAP://" & strDefaultDN)
For Each objTypeSearch in objContainer
If Left(objTypeSearch.Name, 3) = "CN=" Then
ReDim Preserve arrTypeSearch(intSize)
arrTypeSearch(intSize) = objTypeSearch.Name
intSize = intSize + 1
End If
Next
'<<<
Case "OUs"
intSize = 0
'>>> Liste des OUs depuis la racine du domaine
Set objOUs = GetObject("LDAP://" & strDefaultDN)
For Each objTypeSearch1 in objOUs
If objTypeSearch1.Class = "organizationalUnit" Then
ReDim Preserve arrTypeSearch(intSize)
arrTypeSearch(intSize) = objTypeSearch1.Name
intSize = intSize + 1
'>>> Liste des OUs enfants 1er niveau
Set objOUsChildren2 = GetObject("LDAP://" & arrTypeSearch(intSize - 1) & _
"," & strDefaultDN)
For Each objTypeSearch2 in objOUsChildren2
If objTypeSearch2.Class = "organizationalUnit" Then
ReDim Preserve arrTypeSearch(intSize)
arrTypeSearch(intSize) = objTypeSearch2.Name & "," & _
objTypeSearch1.Name
intSize = intSize + 1
'>>> Liste des OUs enfants 2ème niveau
Set objOUsChildren3 = GetObject("LDAP://" & arrTypeSearch(intSize - 1) &
_
"," & strDefaultDN)
For Each objTypeSearch3 in objOUsChildren3
If objTypeSearch3.Class = "organizationalUnit" Then
ReDim Preserve arrTypeSearch(intSize)
arrTypeSearch(intSize) = objTypeSearch3.Name & "," & _
objTypeSearch2.Name & "," & _
objTypeSearch1.Name
intSize = intSize + 1
End If
Next
'<<<
End If
Next
'<<<
End If
Next
'<<<
Case "Domains"
strTypeSearch = ""
Case "Groups"
strTypeSearch = ""
Case "Users"
strTypeSearch = ""
End Select
CreateArray = arrTypeSearch
End Function
--
Par avance, merci de votre aide.
Thierry
"ESA" <esalle@lixxbail.com> a écrit dans le message de news:
eKhct2U8FHA.3044@TK2MSFTNGP10.phx.gbl...
Bonjour,
Afin d'effectuer des traitements sur des comptes utilisateurs dans l'AD, je
souhaite parcourir l'arborescence des différentes OU.
Dès lors que j'ai connaissance (dans le programme) du nom complet de la
"branche", je sais effectuer le traitement.
Ma problèmatique est de déterminer mon arborescence
Du style une fonction, qui prends comme paramètre d'entrée le nom de mon OU
racine, et qui parcours toutes les OU "enfants".
(je contourne actuellement cette partie en fournissant un fichier .csv
contenant l'ensemble des OU existantes - cependant ce script n'est pas
spécialement souple
car l'arborescence AD évolue - et je pense qu'il doit bien y avoir une
solution plus efficace)
Merci pour vos idées ( pas vu sur script-center /)
J'ai fait ça, ça marche mais je suis sur qu'il y a mieux
Cordialement
Thierry
'<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<>-<> Function CreateArray(TypeSearch) 'Description : '------------ 'Entrées : 'TypeSearch => Computers ou Users ou Containers ou OUs ou Domains ... 'Sorties : 'Retourne un tableau avec le type d'objet recherché" Dim intSize Dim objTypeSearch, objTypeSearch1, objTypeSearch2, objTypeSearch3 Dim objContainer Dim objOUs, objOUsChildren2, objOUsChildren3
Select Case TypeSearch Case "Containers" '>>> Liste des containers depuis la racine du domaine intSize = 0 'Remplissage des Containers dans un tableau Set objContainer = GetObject("LDAP://" & strDefaultDN) For Each objTypeSearch in objContainer If Left(objTypeSearch.Name, 3) = "CN=" Then ReDim Preserve arrTypeSearch(intSize) arrTypeSearch(intSize) = objTypeSearch.Name intSize = intSize + 1 End If Next '<<<
Case "OUs" intSize = 0 '>>> Liste des OUs depuis la racine du domaine Set objOUs = GetObject("LDAP://" & strDefaultDN) For Each objTypeSearch1 in objOUs If objTypeSearch1.Class = "organizationalUnit" Then ReDim Preserve arrTypeSearch(intSize) arrTypeSearch(intSize) = objTypeSearch1.Name intSize = intSize + 1 '>>> Liste des OUs enfants 1er niveau Set objOUsChildren2 = GetObject("LDAP://" & arrTypeSearch(intSize - 1) & _ "," & strDefaultDN) For Each objTypeSearch2 in objOUsChildren2 If objTypeSearch2.Class = "organizationalUnit" Then ReDim Preserve arrTypeSearch(intSize) arrTypeSearch(intSize) = objTypeSearch2.Name & "," & _ objTypeSearch1.Name intSize = intSize + 1
'>>> Liste des OUs enfants 2ème niveau Set objOUsChildren3 = GetObject("LDAP://" & arrTypeSearch(intSize - 1) & _ "," & strDefaultDN) For Each objTypeSearch3 in objOUsChildren3 If objTypeSearch3.Class = "organizationalUnit" Then ReDim Preserve arrTypeSearch(intSize) arrTypeSearch(intSize) = objTypeSearch3.Name & "," & _ objTypeSearch2.Name & "," & _ objTypeSearch1.Name intSize = intSize + 1 End If Next '<<<
End If Next '<<<
End If Next '<<<
Case "Domains" strTypeSearch = "" Case "Groups" strTypeSearch = "" Case "Users" strTypeSearch = "" End Select CreateArray = arrTypeSearch End Function
--
Par avance, merci de votre aide.
Thierry "ESA" a écrit dans le message de news:
Bonjour,
Afin d'effectuer des traitements sur des comptes utilisateurs dans l'AD, je souhaite parcourir l'arborescence des différentes OU.
Dès lors que j'ai connaissance (dans le programme) du nom complet de la "branche", je sais effectuer le traitement. Ma problèmatique est de déterminer mon arborescence
Du style une fonction, qui prends comme paramètre d'entrée le nom de mon OU racine, et qui parcours toutes les OU "enfants".
(je contourne actuellement cette partie en fournissant un fichier .csv contenant l'ensemble des OU existantes - cependant ce script n'est pas spécialement souple car l'arborescence AD évolue - et je pense qu'il doit bien y avoir une solution plus efficace)
Merci pour vos idées ( pas vu sur script-center /)