从Active Directory用户对象检索RDN

时间:2012-07-25 21:51:34

标签: powershell active-directory powershell-v2.0

是否可以在Active Directory中检索具有完整属性的用户对象的RDN。

我已经对此进行了大量阅读,发现AD用户对象将RDN存储在名为“name”的属性中。据推测,name(rdn)属性的值应该类似于name =“cn = Smith,Joe”。 cn属性是应该返回的内容的一部分。但是,每当我检索对象的name属性时,“cn =”似乎总是丢失。例如

$foo = get-aduser -filter 'Name -like "Smith, Joe"'

$foo.name

将返回"Smith, Joe"而不是"cn=Smith, Joe"。有没有办法查询并获得完整的RDN返回?

3 个答案:

答案 0 :(得分:1)

另一种方法是获取对象的完整DN,拆分DN,并显示结果数组中的第一个元素,即RDN,CN =或其他,依赖于对象

$((foo.distinguishedname).split(","))[0]

答案 1 :(得分:0)

不是答案,而是信息:

首先,RDN属性的attributeId由架构修复: 从RDN的角度来看,Active-Directory继承自X500标准。也就是说,您不选择要创建RDN的属性(在其他LDAP目录中)。在Active-Directory中,RDN属性由类rDNAttID在类模式中给出,它指定RDN属性的attributeId。如果查看类user的架构,则为CN

所以你可以使用:

"CN=$((get-aduser 'Smith, Joe').Name)"

其次做以下实验: 在OU中创建一个名为“Mananegement”的用户,您有以下DN CN=MAnagement,OU=MyOU,...现在尝试在同一个OU中创建一个名为“Mananegement”的OU,它应该创建一个具有以下DN OU=MAnagement,OU=MyOU,...的对象,但是你收到一个错误。这个错误让我相信,某种程度上,Active-Directory将“Mananegement”视为RDN而不是像其他目录那样“CN = Mananegement”。

答案 2 :(得分:0)

$ current.Substring($ current.IndexOf('OU ='))