пятница, 30 октября 2015 г.

SharePoint. Фильтрация пользователей в PeoplePicker


Изначально в выдачу поля типа "Пользователь" попадают все пользователи домена Active Directory и из доменов с которыми установлены доверительные отношения:



В моём случае мне необходимо было отфильтровать некоторых пользователей. Мне не нужны были пользователи без email адреса, к примеру служебные учётные записи. Т.е. не показывать пользователей с пустым или отсутствующим атрибутом mail из AD. Так же я хотел, чтобы PeoplePicker показывал мне пользователей как в адресной книге из Exchange. Адресная книга не отображает пользователей AD, у кого поле msExchHideFromAddressLists установлено в TRUE.

Поведение PeoplePicker'а можно настроить  через утилиту STSADM.EXE, которая находиться в файловой системе по адресу: C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\BIN, так же можно использовать PowerShell.

Для того, чтобы выполнить описанные выше условия, необходимо выполнить следующую команду в STSADM.EXE:

stsadm -o setproperty -pn peoplepicker-searchadcustomfilter -pv "(&(mail=*) (!msExchHideFromAddressLists=TRUE))" -url http://server

Можно делать более сложные условия, например делать как в примере выше, но при этом всё равно отображать особенных пользователей. Их особенность в том, что у них атрибут extensionAttribute5 установлен в "Show":

stsadm -o setproperty -pn peoplepicker-searchadcustomfilter -pv "(|(&(mail=*)(!msExchHideFromAddressLists=TRUE))(extensionAttribute5=Show))" -url http://server

Чтобы просмотреть какой сейчас фильтр установлен - можно выполнить команду:

stsadm -o getproperty -url http://portal -pn peoplepicker-searchadcustomfilter

Для сброса фильтрации:

stsadm -o setproperty -pn peoplepicker-searchadcustomfilter -pv " "

Узнать подробнее про запросы к Active Directory можно по ссылке:

https://technet.microsoft.com/en-us/library/aa996205(EXCHG.65).aspx