AD是在2003年的function级别,我们有些DC是运行Windows Server 2003,有些是2008年,有些是2008 R2。
使用以下查询时:
(objectCategory=user)
我不指望在objectCategory属性等于“CN = Person,CN = Schema,CN = Configuration,DC = Contoso”时看到任何结果
我只期望objectCategory属性等于'CN = User,CN = Schema,CN = Configuration,DC = Contoso'的对象
但是,查询确实返回了objectCategory属性等于“CN = Person,CN = Schema,CN = Configuration,DC = Contoso”的所有对象
我的问题是这样的:为什么我看到我做的search结果? AD是否主动将包含(objectCategory=user)查询转换为(objectCategory=Person) ? 我已经查看了Person和User类的模式定义,但是在查看结果时我看不到任何理由。 我知道User类是organizationalPerson类的一个子类,它是Person的一个子类,但是我看不到可以解释这个翻译的属性值。
你得到这个人对象的原因是因为我们没有用户这样的类别。 用户是一个class级。 通过严格的定义,Objectcategory获得一个DN属性。 为了避免强制编码器查找模式DN,AD中的查询引擎允许您提供一个类并提供defaultObjectCategory作为扩展。 所以,如果你太查找用户的模式,你会得到这个作为defaultobjectcategory:
CN=Person,CN=Schema,CN=Configuration,DC=jimbdom,DC=com
search用户的正确expression式是:“(&(objectClass = user)(objectCategory = person))”。
用户从Personinheritance。 换句话说,用户是人员。 相反是不正确的。
所以如果你search用户,你也可以看到人。
来自Technet :
