В ходе настройки общих служб на сервере SharePoint Server 2019 заметили, что c некоторого момента перестало работать удаление профилей в User Profile Service веб-узла Central Administration (на веб-странице Application Management > Manage service applications > User Profile Service Application > Manage User Profiles). Попытка удаления профиля стала приводить к ошибке "Sorry, this site hasn't been shared with you."
Рекомендуемая в подобных ситуациях проверка прав доступа к службе управления профилями смысла не имела, так как ещё буквально пару дней назад это удаление профилей работало без проблем. При этом единственным конфигурационным изменением с последнего успешного удаления профилей была настройка синхронизации профилей с ADDS с последующим обновлением библиотеки фотографий пользователей.
Старая ветка обсуждения подсказала то, что проблема имеет большую историю и связана со спецификой работы веб-страницы /_layouts/15/ProfMngr.aspx, используемой на узле Central Administration.
Практические опыты показали, что если в свойствах профиля через веб-страницу редактирования профиля "Edit User Profile" (/_layouts/15/ProfAdminEdit.aspx) удалить привязку к фотографии, то после этого профиль удаляется без проблем. И такой метод можно использовать лишь в случае, когда нужно удалить один-два профиля. В случае, когда требуется удалить сотни или тысячи профилей, решением это, конечно же, назвать трудно.
Чтобы не ломать копья с недокументированной настройкой разрешений на веб-службы и базы данных SharePoint, мы решили попробовать удалить профиль с помощью PowerShell.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$SiteURL = "https://kom-mys.holding.com"
$AccountName="KOM\petya"
$ServiceContext = Get-SPServiceContext -site $SiteURL
$UserProfileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServiceContext)
$UserProfile = $UserProfileManager.GetUserProfile($AccountName)
$UserProfileManager.RemoveUserProfile($AccountName)
В результате профиль удалился без каких-либо проблем, даже при наличии привязанной к нему фотографии. Поэтому данный метод можно считать вполне рабочим обходным решением в такой ситуации. И если по какой-то причине возникает задача быстрого удаления всех профилей, то это сделать можно PS-кодом следующего вида:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$SiteURL = "https://kom-mys.holding.com"
$ServiceContext = Get-SPServiceContext -site $SiteURL
$UserProfileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServiceContext)
$UserProfiles = $UserProfileManager.GetEnumerator()
Foreach ($Profile in $UserProfiles)
{
Write-Host Removing User Profile: $Profile["AccountName"]
$UserProfileManager.RemoveUserProfile($profile["AccountName"])
}
Добавить комментарий