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