2012-12-24 3 views
2

J'ai une application VB (.NET 4.0) dans laquelle un utilisateur sélectionne un groupe AD qu'il possède, puis peut ajouter des utilisateurs d'une liste prédéfinie à ce groupe. Les groupes et tirés de AD et les utilisateurs sont tirés d'Oracle, mais sont tous les utilisateurs AD existants.Ajout d'un utilisateur AD à un groupe AD

Vous verrez trois blocs de code commentés, j'ai essayé tous les trois et obtenir "COMException a été non gérée par le code utilisateur: Erreur non spécifiée" avec chacun.

<WebMethod()> _ 
Public Shared Function AddDirectReport(ByVal User As String, ByVal Group As String) As String 
    Dim GroupMembers As List(Of String) = LoadGroupMembers(Group) 
    If GroupMembers.Contains(User) Then 
     Return "USER " & User & " IS ALREADY IN GROUP " & Group 
    End If 

    Dim SearchRoot As New DirectoryEntry("[LDAP Path]") 

    Dim GroupSearcher As New DirectorySearcher 
    With GroupSearcher 
     .SearchRoot = SearchRoot 
     .Filter = "(&(ObjectClass=Group)(CN=" & Group & "))" 
    End With 

    Dim UserSearcher As New DirectorySearcher 
    With UserSearcher 
     .SearchRoot = SearchRoot 
     .Filter = "(&(ObjectClass=Person)(CN=" & User & "))" 
    End With 

    Dim g As DirectoryEntry = GroupSearcher.FindOne.GetDirectoryEntry 
    Dim u As DirectoryEntry = UserSearcher.FindOne.GetDirectoryEntry 

    'With u 
    ' .Properties("memberof").Add(g) 
    ' .CommitChanges() 
    'End With 

    'With g 
    ' .Properties("member").Add(u) 
    ' .CommitChanges() 
    'End With 

    'With g 
    ' .Properties("members").Add(u) 
    ' .CommitChanges() 
    'End With 
    Return "Success?" 
End Function 

Répondre

2

This est une excellente ressource.

Dans celui-ci, vous constaterez que votre seconde était presque là. Au lieu de passer la DirectoryEntry à la méthode d'ajout, vous avez besoin de son nom distinctif.

With g 
    .Properties("member").Add(u.Properties("distinguishedName").Value) 
    .CommitChanges() 
End With 
+0

Presque, je devais utiliser 'u.Properties (« distinguishedName ») value' et cela a fonctionné. Merci! –

Questions connexes