【客户需求】
当编辑webpart时,Target Audiences在弹出的people picker搜索时候,Alias列有空的项目,客户要求不显示Alias列有空的项目。
【分析】
首先这个“Distribution/Security Groups” 是来自AD中的Group,当user profile service同期后,会进入如下数据库表中。
尝试用LDAP进行filter,被证明这个办法对Group无效
【解决办法】
方法一:
在数据库里直接删除,但是不建议这样做,因为直接操作数据库会有风险。
方法二:
使用PowerShell删除没有mail地址的ad group项目
$url = "http://sp2016-3:36406";
$SPSite = get-spsite $url;
$context = [Microsoft.SharePoint.SPServiceContext]::GetContext($SPSite)
$manager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager $context
$sourceMethod = [Microsoft.Office.Server.UserProfiles.MemberGroup].getmethod("get_MailNickName")
$deleteMethod = [Microsoft.Office.Server.UserProfiles.MemberGroup].getmethod("Delete")
foreach ($memberGroup in $manager.GetMemberGroups())
{
if ($sourceMethod.Invoke($memberGroup, @()) -eq "(null)")
{
$deleteMethod.Invoke($memberGroup, @())
}
}