2012-07-25 55 views
1

是否可以在Active Directory中检索用户对象的RDN并保持属性不变。从Active Directory用户对象中检索RDN

我已经做了大量的阅读,发现AD用户对象将RDN存储在名为“name”的属性中。据说名称(rdn)属性的值应该是类似于name =“cn = Smith,Joe”的值。 cn属性是应该返回的部分。然而,无论何时我检索一个对象的名称属性,“cn =”似乎总是缺失。例如

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

$foo.name

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

+0

任何原因'“CN = $ {foo.name}”'不符合您的需求?用户对象的RDN始终以'CN ='开头。 – ig0774 2012-07-26 00:31:26

回答

0

不是一个真正的答案,但信息:

首先RDN属性的属性ID是由固定的模式: 所述视RDN点主动目录从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'与其他目录一样。

1

一种替代,是抓住该对象的完整DN,分裂DN,并显示所得到的阵列中的第一个元素,这将是RDN,无论是CN =或以其它方式,对象依赖

$((foo.distinguishedname).split(","))[0] 
相关问题