首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C#读取AD用户的"msDS-ResultantPSO“属性值

如何使用C#读取AD用户的"msDS-ResultantPSO“属性值
EN

Stack Overflow用户
提问于 2016-07-04 13:29:40
回答 1查看 1.4K关注 0票数 0

我正在尝试使用C#访问AD用户的"msDS-ResultantPSO“属性值,我在用户上应用了密码策略,它显示了"msDS-ResultantPSO”attribute.Now中的值,我正在尝试使用C#以相同的方式获取此值,以获取AD用户的普通属性,如"FirstName,LastName,Email...".I将ResulantPSO属性与其他普通属性一起添加到load.My代码中,带来除"msDS-ResultantPSO“之外的所有正常属性值。

在这方面,请任何人能帮助我。

EN

回答 1

Stack Overflow用户

发布于 2016-07-21 06:15:03

我必须确保运行我的程序的用户具有适当的AD读取权限,而不是这样做会让您更接近:

代码语言:javascript
复制
var ad = new PrincipalContext(ContextType.Domain, _domain, _ldapPathOu);

UserPrincipal user = UserPrincipal.FindByIdentity(ad, username);
DirectoryEntry entry = user.GetUnderlyingObject() as DirectoryEntry;
DirectorySearcher mySearcher = new DirectorySearcher(entry);
SearchResultCollection results;
mySearcher.PropertiesToLoad.Add("msDS-ResultantPSO");

results = mySearcher.FindAll();

if (results.Count >= 1)
{
    string pso = results[0].Properties["msDS-ResultantPSO"][0].ToString();

    //do something with the pso..
    DirectoryEntry d = new DirectoryEntry(@"LDAP://corp.example.com/"+ pso);

    var searchForPassPolicy = new DirectorySearcher(d);
    searchForPassPolicy.Filter = @"(objectClass=msDS-PasswordSettings)";
    searchForPassPolicy.SearchScope = System.DirectoryServices.SearchScope.Subtree;

    searchForPassPolicy.PropertiesToLoad.AddRange(new string[] {"msDS-MaximumPasswordAge"});
    var x = searchForPassPolicy.FindAll();

    var maxAge = (Int64)x[0].Properties["msDS-MaximumPasswordAge"][0];
    var maxPwdAgeInDays = ConvertTimeToDays(maxAge);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38177494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档