我正在尝试从Active Directory中获取用户的部门信息。我有以下类:
public class DomainContext
{
public string DisplayName { get; set; }
public string Name { get; set; }
public string SamAccountName { get; set; }
public string DistinguishedName { get; set; }
public string UserPrincipalName { get; set; }
public string Department { get; set; }
}
然后使用以下方法,我能够获取用户名称、显示名称、sam帐户等信息...
public override void getUserDepts(SPItemEventProperties properties)
{
base.ItemUpdating(properties);
string[] offices = new string[] { "OfficeA", "OfficeB", "OfficeC" };
string ADServerName = "*****";
string ADusername = "******";
string ADpassword = "*****";
using (var context = new PrincipalContext(ContextType.Domain, ADServerName, ADusername, ADpassword))
using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
var searchResults = searcher.FindAll();
foreach (Principal p in searchResults)
{
if (p.DistinguishedName.ToLower().Contains(offices[0].ToLower()) || p.DistinguishedName.ToLower().Contains(offices[1].ToLower()) || p.DistinguishedName.ToLower().Contains(offices[2].ToLower())))
{
DomainContext dc = new DomainContext();
dc.DisplayName = p.DisplayName;
dc.UserPrincipalName = p.UserPrincipalName;
dc.Name = p.Name;
dc.SamAccountName = p.SamAccountName;
dc.DistinguishedName = p.DistinguishedName;
// dc.Department = p. **CAN NOT GET THE DEPARTMENT NAME**
}
}
}
}
但是我无法找到如何获取部门名称。