воскресенье, 6 августа 2017 г.

SharePoint 2016. Обновление подписок на сайты после обновления.

После апгрейда платформы с 2013 на 2016 версию в подписках на сайты остались ссылки на старый хост с именем portal-web-srv, у нового portal16. Это несмотря на то, что в DNS был создан псевдоним portal.

Вот как это выглядит:


Как видно, отображается ссылка на старый хост, а при переходе будет сообщение об ошибке.
В SharePoint подписки на отслеживаемый контент находится в списке Social (Социальные):


Этот список создается в каждой коллекции личных сайтов, по одному на пользователя.
Чтобы исправить ситуацию — надо изменить поле url для элементов этого списка, для этого воспользуемся powershell скриптом ниже. Он пробежится по всем коллекциям и найдет необходимый список, потом обновит все его элементы:

Add-PSSnapin Microsoft.SharePoint.Powershell

$rootAppUrl = "http://portal16"
$old = "portal-web-srv"
$new = "portal16"

$WebApp =  Get-SPWebApplication -Identity $rootAppUrl

foreach ($site in $WebApp.Sites)
{
    $web = $site.RootWeb

    $list = $web.Lists["Социальные"]

    foreach ($item in $list.Items)
    {
        $sPattern = '*' + $old + '*'
        $url = $item["Url"]
        if ($url -like $sPattern) 
        {  
            $nUrl = $url -replace $old, $new
            $item["Url"] = $nUrl
            $item.Update()
        
        }
    }
    $web.Dispose()
 }


После отработки имеем следующий результат: