gpt4 book ai didi

vb.net - Active Directory 用户组成员

转载 作者:行者123 更新时间:2023-12-02 02:31:55 25 4
gpt4 key购买 nike

我正在尝试获取用户组成员身份并将结果限制为与字符串匹配的结果,即我只对以“test-”开头的用户组成员身份感兴趣。

以下是我一直在研究的内容,即使用户属于与搜索字符串匹配的多个组,If 语句也不会在其中任何一个上返回 True。

Private Function GetGroups(ByVal userName As String) As Collection
Dim Groups As New Collection
Dim intCount As Integer
Dim entry As DirectoryEntry = ADEntry()
Dim mySearcher As DirectorySearcher = New DirectorySearcher(entry)
Dim arrList As New ArrayList()

' Limit the search results to only users
mySearcher.Filter = "(&(ObjectClass=User)(CN=" & userName & "))"
' Set the sort order
mySearcher.PropertiesToLoad.Add("MemberOf")

Dim searchResults As SearchResultCollection = mySearcher.FindAll()
MessageBox.Show(searchResults.Count)
If searchResults.Count > 0 Then
Dim group As New DirectoryEntry(searchResults(0).Path)
For Each member As Object In group.Properties("MemberOf")
MessageBox.Show("Pre: "+ member) 'This message box returns all the groups the user is apart of.
If group.Properties("memberOf").Contains("test-") = True Then
MessageBox.Show(member) ' This message box never shows
End If
Next
End If
Return Groups
End Function

有什么方法可以对约束是通配符的对象再次应用搜索或 If 语句?

我正在寻找的组可能是大约 60 个中的一个(这个数量会随着员工离职而增加和减少)。

我正在使用 VB.NET 2.0。

谢谢,

马特

最佳答案

在我看来,您应该搜索用户所在的组。例如,如果您检查的用户的 CNCN=Test,CN=Users,DC=mydomain,DC=local,那么相应的 LDAP 查询应该是

(&(cn=test-*)(objectCategory=group)(member=CN=Test,CN=Users,DC=mydomain,DC=local))

作为应该加载的属性,您应该选择组 LDAP 对象的属性。

关于vb.net - Active Directory 用户组成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3492763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com