通过代码创建新用户时,在AD中填充自定义属性

时间:2019-04-26 09:56:19

标签: c# active-directory

我在AD方面没有太多经验,但是通过在线查找,我发现了如何通过C#以编程方式创建用户。我还阅读了自定义属性,我希望做的是创建一个新的自定义属性,比如说“ myNewAttribute”,并将其作为用户创建的一部分进行填充。

我曾经想过,如果我在AD中添加此自定义属性,那么应该可以在每次创建帐户时填充该自定义属性,但也许每次都需要创建它?

假设不需要每次都创建它,到目前为止,我已经通过执行以下操作来创建用户:

using(var pc = new PrincipalContext(ContextType.Domain, <SERVER HERE>,username,password))
{
    using(var up = new UserPrincipal(pc)){
        up.UserPrincipalName = "whatever";
        up.Save();
    }
}

我理想地希望能够做到的是:

up.myNewAttribute = "new value here";

这是否可行?如果不能,如何在此处设置属性值?

1 个答案:

答案 0 :(得分:1)

UserPrincipal类仅公开某些属性。对于其他任何对象,您都必须访问基础的DirectoryEntry对象并直接对其进行修改:

((DirectoryEntry) up.GetUnderlyingObject()).Properties["myNewAttribute"].Value = "new value here";

如果您经常这样做,那么另一个选择是创建自己的类,该类继承自UserPrincipal,并将该属性作为属性公开。这里有一个GroupPrincipal的示例,但它与UserPrincipal同样适用:https://anyrest.wordpress.com/2010/10/14/how-to-use-ad-attributes-not-represented-in-userprincipal-groupprincipal-and-computerprincipal/