Вследствие не совсем корректной настройки многострочного текстового поля в списке портала на платформе 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
}
}
}
}

