1

我使用以下代码搜索全局目录:

public SearchResultCollection SearchGlobalCatalog(string username)
{
    var de = new DirectoryEntry("GC://SERVERNAME", "USERNAME", "PASSWORD");
    var ds = new DirectorySearcher(de);
    ds.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + username + "*))";
    ds.SearchScope = SearchScope.Subtree;                
    var searchResults = ds.FindAll();

    return searchResults;
}

现在,问题是我不知道如何UserPrincipalSearchResultCollection. 我想这样做的原因是为了访问全局目录中不可用的一些用户属性,例如员工 ID。

4

1 回答 1

2

AUserPrincipalSystem.DirectoryServices.AccountManagement命名空间的一部分。

使用该命名空间中的辅助类来获取UserPrincipal对象。

不使用这样的UserPrincipal尝试:

using (var userBinding = new DirectoryEntry("LDAP://domain.forest.company.com"))
{
    using (DirectorySearcher adSearch = new DirectorySearcher(userBinding))
    {
        adSearch.ReferralChasing = ReferralChasingOption.All;
        adSearch.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + username + "*))";
        adSearch.PropertiesToLoad.Add("employeeID");
        adSearch.PropertiesToLoad.Add("givenname");
        adSearch.PropertiesToLoad.Add("samaccountname");

        var result = adSearch.FindOne();

        var employeeId = result.Properties["employeeID"][0].ToString();
    }
}
于 2013-12-19T07:12:30.090 回答