我想开发一个员工目录应用程序,列出组织中的所有人员,包括姓名,电子邮件地址,电话号码,办公地点 - 所有这些信息。我们目前在Active Directory中有这个,我想开发一个简单的.Net应用程序,以便人们搜索和检索它。获取信息看起来很简单 - 有许多关于使用DirectorySearcher类的示例。我从
开始 Dim objADAM As DirectoryEntry ' Binding object.
Dim objGroupEntry As DirectoryEntry ' Group Results.
Dim objSearchADAM As DirectorySearcher ' Search object.
Dim objSearchResults As SearchResultCollection ' Results collection.
Dim strPath As String ' Binding path.
objADAM = New DirectoryEntry(strPath)
objADAM.RefreshCache()
objSearchADAM = New DirectorySearcher(objADAM)
objSearchADAM.Filter = "((&(objectClass=user)(objectCategory=person)))"
objSearchADAM.SearchScope = SearchScope.Subtree
objSearchResults = objSearchADAM.FindAll()
然后我为objSearchResults集中的每个SearchResult对象创建了一个for循环。
If objSearchResults.Count <> 0 Then
Dim objResult As SearchResult
For Each objResult In objSearchResults
objGroupEntry = objResult.GetDirectoryEntry
我还查看了所有目录条目属性 - 核心属性在那里,但如果我使用Active Directory资源管理器浏览实际用户对象,则列出了更多属性。是否有一些更复杂的Active Directory结构意味着我需要做更多只是DirectorySearcher的简单FindAll方法?
...谢谢
答案 0 :(得分:2)
当您使用DirectorySearcher时,您应该指定要加载的确切属性(PropertiesToLoad)。当我操作大块的AD数据时,让一个DirectoryEntry实例进入ADPath更有用。如果你这样做,你可以自己登记属性。
另外,使用ADSI Edit工具非常方便(我认为它来自微软)。它允许您查看AD节点中的所有可能条目。
如果您需要更多信息,只需提出更准确的问题,我会尽力回答。花了一些时间调查这个话题:))
答案 1 :(得分:1)
进入管理工作室并单击服务器对象文件夹。然后展开到链接服务器并添加“新链接服务器”。您需要在此处获取完整的信息,例如本地服务器登录到远程服务器登录映射。例如,您可以在此处使用域帐户。
您需要为链接服务器命名,例如ADSI或任何您喜欢的名称。 建立此链接服务器后,您可以针对此数据编写查询,包括SELECT或INSERT查询,以将此AD数据推送到您自己的业务对象/表。
例如,这是一个拉取所有AD用户的示例查询:
SELECT
*
FROM
OPENQUERY(ADSI,
'<LDAP://YourDomainControllerGoesHere/DC=YourDomain,DC=YourDCGoesHere>;(&(objectCategory=Person)(objectClass=user)( !(userAccountControl:1.2.840.113556.1.4.803:=2)));name, sAMAccountName,userAccountControl,
telephoneNumber,mobile, facsimileTelephoneNumber, mail, employeeNumber, department, company, manager, title, versionNumber, adspath, displayname, sn, comment, givenName;subtree')
Rowset_1
如果您不知道LDAP://以及DC之后的内容,您将需要与网络管理员合作。执行此操作后,运行查询,您将直接从AD获取用户名,电子邮件,电话号码等。
答案 2 :(得分:0)
你们是在运行SQL Server吗?
如果您这样做更简单,那么您可以将ADSI添加为链接服务器并提取所有相关的AD信息。
让我知道
答案 3 :(得分:0)
刚刚发现我认为我遇到的问题 - 没有归还的属性 - 不正确。在SearchResult集合中,列表中包含的唯一属性是那些AD记录的实际值。