В процессе использования SharePoint 2013 коллега поправил себе профиль, добавив дополнительные языки:

Установлен Service Pack 1, а English Language Pack - нет.
Сразу же после применения изменений на всех страницах появлялась ошибка:
Пробовал через PowerShell скопировать поля из работающего профиля в сломанный, это не дало результат.
Исправить удалось удалением профиля, используя PowerShell:
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) { Addd-PSSnapin "Microsoft.SharePoint.PowerShell" } [void][reflection.assembly]::Loadwithpartialname("Microsoft.Office.Server"); $site=new-object Microsoft.SharePoint.SPSite("http://portal"); $serviceContext = Get-SPServiceContext $site; $site.Dispose(); $upm = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager($serviceContext); $upm.RemoveUserProfile("Domain\Account");
Хотя это можно сделать через веб-интерфейс.
Потом на всякий случай удалил пользователя из user information list, для этого я использовал SharePoint End User Viewer Tool, таким образом проблема была решена.
Но ошибка может сохраняться, если пользователь присутствует на других коллекциях.
Это происходит из-за того, что каждая коллекция сайтов имеет свой список сведений о пользователях. Коллекций может быть очень много. Например, из-за личных сайтов.
Чтобы автоматически удалить из всех коллекций - воспользуйтесь скриптом ниже:
Но ошибка может сохраняться, если пользователь присутствует на других коллекциях.
Это происходит из-за того, что каждая коллекция сайтов имеет свой список сведений о пользователях. Коллекций может быть очень много. Например, из-за личных сайтов.
Чтобы автоматически удалить из всех коллекций - воспользуйтесь скриптом ниже:
Add-PSSnapin Microsoft.SharePoint.PowerShell $UserLogin = "i:0#.w|domain\login"; $Sites = Get-SPSite -Limit All $AllSites = @() foreach($Site in $Sites) { $RootWeb = $Site.RootWeb If([bool](Get-SPUser -Identity $UserLogin -Web $RootWeb -EA SilentlyContinue) -eq $True) { $User = Get-SPUser -Identity $UserLogin -Web $RootWeb Write-Host ("Удален из " + $RootWeb.Url) Remove-SPUser -Identity $User -Web $RootWeb -Confirm:$False $AllSites += $RootWeb.Url } else { Write("Отсутствует на: " + $RootWeb.Url) } } if(!($AllSites).count -eq 0) { Write-Host "Removed user $($UserLogin) from:" -Fore "Magenta" foreach($S in $AllSites){Write-Host “- $S”} Write-Host "" $AllSites = @() }
Комментариев нет:
Отправить комментарий