Обновление пользовательских профилей с помощью PowerShell
На одном из проектов в процессе переноса фермы SharePoint с одной инфраструктуры на другую была обнаружена мелкая неприятность, связанная с переносом базы данных контента приложения с пользовательскими профилями службы “User Profile Service Application”. Проблема заключалась в том, что ссылки на пользовательские изображения были не относительными, а полными и после переноса стали невалидными. Не могу сказать, что проблема серьезная, но на ее примере можно рассмотреть возможности работы с пользовательскими профилями через объектную модель.
Указанный ниже пример осуществляет обновление урла на изображение пользователя.
function UpdateUserProfiles ($OldSiteUrl, $NewLocationUrl) { $Site = Get-SPSite "$NewLocationUrl" $ServiceContext = Get-SPServiceContext($Site) $ProfileManager = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServiceContext) $Profiles = $ProfileManager.GetEnumerator() foreach($profile in $Profiles){ if ($profile["PictureUrl"].Value){ if($profile["PictureUrl"].Value.StartsWith("$OldSiteUrl")){ $accountName = $profile["AccountName"].Value; try { $img = $profile["PictureUrl"].Value.Replace($OldSiteUrl, $NewLocationUrl) $profile["PictureUrl"].Value = $img; $profile.Commit() Write-Host "Profile $accountName updated. Image Url: $img" -ForegroundColor Green } catch { Write-Host "Profile $accountName update error. $_" -ForegroundColor Green } Write-Host ""; } } } } UpdateUserProfiles "http://old_server_host:port/siteUrl" "http://new_server_host:port/NewSiteUrl"
Опубликовано: 05.01.2014
Автор: Сергей Снитко