Сегодня был неприятно удивлен тем, что обнаружил повторяющиеся записи в том списке SharePoint, в котором они не должны были появляться. Вероятность появления повторяющихся записей была, потому сразу озадачился узнать, сколько всего повторяющихся записей образовалось. Всего в списке было порядка 20 000 записей.
Немного попользовавшись поиском, нашел подходящий PowerShell-скрипт. Он правда сразу удалял найденные дубликаты, я в него добавил строчку, чтобы сначала можно было посмотреть на найденные записи – может их и не стоит удалять.
Add-PSSnapin microsoft.sharepoint.powershell
$web = Get-SPWeb -Identity http://spdev/vc
$list = $web.Lists["companies"]
$AllDuplicates = $list.Items.GetDataTable() | Group-Object title | where {$_.count -gt 1}
$count = 1
$max = $AllDuplicates.Count
foreach($duplicate in $AllDuplicates)
{
#раскомментируйте строчку ниже для удаления повторяющихся записей
#$duplicate.group | Select-Object -Skip 1 | % {$list.GetItemById($_.ID).Delete()}
#строчка ниже выводит на экран информацию об обнаруженных повторяющихся записях
Write-Host $duplicate.Name
}
Remove-PsSnapin Microsoft.SharePoint.PowerShell

