SharePoint在2013里极大的简化了people picker,没有check按钮,也没有了browse 按钮,而是在用户输入后自动提示结果。那么你有没有想问过,SharePoint去AD里查的时候,是查找的什么属性呢?
通过一番查找,发现SharePoint 2013是通过如下的LDAP filter查询的:
(&(objectCategory=person)(|(anr=adam*)(SamAccountName=adam*)))
(&(objectCategory=group)(BIT_AND:
(groupType)&2147483648)(|(anr=adam*)(SamAccountName=adam*)))
在 http://technet.microsoft.com/en-us/library/cc978014.aspx 中介绍到, ANR 的全称是 Ambiguous Name Resolution,是一些属性的集合。默认情况下,包含:
• givenName (first name)
• sn (surname, or last name)
• displayName (the name given the object when it is created)
• RDN (the relative distinguished name of the object)
• legacyExchangeDN
• physicalDeliveryOfficeName
• proxyAddresses
当用户在people picker的输入框里,输入字符串之后,SharePoint就去这些属性里找匹配项。
如果想要支持搜索其他AD属性,可以手动做设置。比如我希望搜索所有title是manager的人,步骤如下:
- 打开域控制器的机器, RUN “REGSVR32 SCHMMGMT.DLL”命令,这个是为了注册 Active Directory Schema Snap-in
- 打开 MMC,File > Add/Remove Snapin,加载Active Directory Schema MMC
- 展开Active Directory Schema,在Attributes里找到Title这个是属性,双击。
- 选中’Index this attribute‘ 和’Ambiguous Name Resolution (ANR)’ ,点击Apply,然后点OK
这个不是立即生效的,需要等几分钟,AD索引这些属性需要一点时间。
然后你就可以使用其他的属性值来搜索用户了。
比如张三是Manger:
输入manager时候,就会搜索出张三。