【发布时间】:2016-03-15 20:57:19
【问题描述】:
我需要使用 VB 将用户添加到 Active Directory。除了将用户分配到组之外,我发现代码(大部分)都有效。我相当确定代码可以工作,只是不知道要传递给它的组的格式。
给定代码(下)和我的 AD 结构的图像(下),传递给例程以将用户添加到组“Level1/All Users/Level 2/A-K”的 GroupName 的结构是什么“?
TIA
Public Shared Sub AddUserToGroup(ByVal de As DirectoryEntry, ByVal deUser As DirectoryEntry, ByVal GroupName As String)
Dim deSearch As DirectorySearcher = New DirectorySearcher()
deSearch.SearchRoot = de
deSearch.Filter = "(&(objectClass=group) (cn=" & GroupName & "))"
Dim results As SearchResultCollection = deSearch.FindAll()
Dim isGroupMember As Boolean = False
If results.Count > 0 Then
Dim group As New DirectoryEntry(results(0).Path)
Dim members As Object = group.Invoke("Members", Nothing)
For Each member As Object In CType(members, IEnumerable)
Dim x As DirectoryEntry = New DirectoryEntry(member)
Dim name As String = x.Name
If name <> deUser.Name Then
isGroupMember = False
Else
isGroupMember = True
Exit For
End If
Next member
If (Not isGroupMember) Then
group.Invoke("Add", New Object() {deUser.Path.ToString()})
End If
group.Close()
End If
Return
End Sub
【问题讨论】:
-
我以某种方式认出了这个 Sub grin。好的..所以这个函数是为了将用户添加到组中而构建的。您的“A-K”是一个组织单位 (OU)。请说明您是想在此 OU 中创建用户,还是确实想将用户添加到现有组。
-
创建用户时,我会打开 AD 仪表板。根据用户的姓氏,我导航到图像中的 A-K 或 L-Z。在那里,我右键单击并选择“新建>用户”。此时会弹出添加用户对话框,我可以添加用户。现在我承认我不太了解 AD 的内部运作,特别是 OU 和 Group 之间的区别。我想要做的是自动化我一直在手动做的事情。我的代码在创建用户的同时也能发挥作用。问题是,无论我作为“GroupName”传递什么,它都将它放在“root”(Level1)中。
-
好吧,我现在明白你想要什么了。给我一点时间,我会给你代码和解释
标签: vb.net active-directory ldap