Вследствие не совсем корректной настройки многострочного текстового поля в списке портала на платформе SharePoint 2010 после редактирования элемента пропадал текст поля, а вместо текста появлялась ссылка на просмотр истории изменений.

Изменив настройку многострочного поля, текст перестал пропадать при редактировании элементов. Но он уже успел пропасть из примерно 1/3 записей, коих было примерно 1500. На редактирование такого количества записей руками ушло бы никак не меньше 3 часов, скорей всего – рабочий день. Потому решено было оказать помощь бизнес-пользователям списка и создать PowerShell скрипт, который доставал из истории изменений последнее непустое значение поля и обновлял его в элементе.

if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) 
{Write-Host "Подключение надстроек Sharepoint" 
    Add-PSSnapin Microsoft.SharePoint.PowerShell} 

$spsite = Get-SPSite http://spdev 
$web = Get-SPWeb http://spdev/spsite/faq/ 
$list = $web.Lists["mySPList"] 
$items = $list.GetItems() 

$i =0 
foreach ($item in $items) 
{   
    if ([string]::IsNullOrEmpty($item["Lost values field"])) 
    { 
            $i++         
            foreach ($version in $item.Versions) 
            {         
                if (![string]::IsNullOrEmpty($version["Lost values field"])) 
                {   
                   $item["Lost values field"] = $version["Lost values field"] 
                   $item.SystemUpdate() 
        #Log on screen 
                   Write-Host $i "Update Item" $item.Id   ": " $version["Lost values field"] 
                   break 
                }             
            } 
    }
}