Active Directory et fonction "find"

Le Forum Windows 2000
Scanner Windows pour détecter les erreurs de registre

Ce que nous vous conseillons :

1. Lisez les réponses ci-dessous où vous trouverez des conseils et de l'aide de la part des autres utilisateurs.

2. Avant de faire des modifications sur votre système ou d'installer des logiciels, nous vous recommandons
    fortement de cliquer ici pour scanner Windows afin de détecter les erreurs de registre.



Messagepar sevensins » 11 Mar 2009, 11:48

Bonjour,

je gère un parc AD assez complexe dans les OU, mon problème étant, et je ne pense pas être le seul dans ce cas, quand on recherche un user avec la fonction "find", hélas il ne donne pas son OU de rattachement dans l'architecture AD, ce qui est pourtant parfois nécessaire pour certaines opérations.


J'aurai voulu savoir si vous connaissiez un moyen "propre" pour voir l'OU d'un user lors d'un "find"; pour l'instant j'ai juste implémenté un VBS de ma conception qui donne l'OU lors d'une exploitation d'un rapport csvde.

Je vous remercie.
sevensins
 
Messages: 8
Inscrit le: 18 Nov 2008, 13:14

Messagepar LeLapinFou » 11 Mar 2009, 18:04

Bonsoir,

Non, l'option Find ne donnera pas l'OU... par contre, faire un vbs ou un VB qui va lire directement l'AD plutôt que de lire un rapport, cela va plus vite.

Voici une partie du code VB (Mais il est très facile de le remettre en VBS) qui me permet de gérer mon ad a travers une interface, cela permet de donner des accès a certainement personnes... qui ne devraient pas avoir les outils d'admin de l'AD, et en plus cela fonctionne sur tous les domaines sans modifier le code.

Code: Tout sélectionner
   
Private Sub SearchInfoAD(ByVal user As String)
   Dim AdRoot As New DirectoryEntry("LDAP://" & GetDomainName)
   Dim search As New DirectorySearcher(AdRoot)
   Dim dureeMax As New TimeSpan(0, 0, 45)
   search.SearchRoot = AdRoot
   search.SearchScope = SearchScope.Subtree
   search.Filter = "(cn=" & user & ")"
   search.PropertiesToLoad.Add("cn")
   search.PropertiesToLoad.Add("description")
   search.PropertiesToLoad.Add("Path")
   search.ServerTimeLimit = dureeMax
   search.SizeLimit = 1500
   Dim result As SearchResult
   result = search.FindOne()
   Dim UserEntry As New DirectoryEntry(result.Path)
   With result.GetDirectoryEntry
       Try
           FillDetail(.Path.ToString)
       Catch ex As Exception
       End Try
   End With
End Sub

Private Sub FillDetail(ByVal SelectedPath As String)
   Dim t = Split(SelectedPath, ",")
   For i As Integer = 0 To UBound(t)
       If UCase(Microsoft.VisualBasic.Left(t(i), 2)) = "OU" Then
           Dim s = Split(t(i), "=")
           lblAd01.Text = "OU : " & s(1)
           Exit For
       End If
   Next
End Sub

Public Function GetDomainName() As String
    Dim oRootDSE
    oRootDSE = GetObject("LDAP://RootDSE")
    Return (oRootDSE.Get("defaultNamingContext"))
End Function
Avatar de l’utilisateur
LeLapinFou
Modérateur
 
Messages: 9510
Inscrit le: 09 Déc 2002, 10:25
Localisation: 0001 Processeur Ville

Messagepar sevensins » 12 Mar 2009, 09:17

Je te remercie :)

Quand j'aurai transcris en VBS, je le posterai sur le forum ;)
sevensins
 
Messages: 8
Inscrit le: 18 Nov 2008, 13:14


Retour vers Windows 2000

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités

  •  Liens commerciaux