删除SharePoint列表中的重复项目

时间:2014-01-24 16:04:41

标签: sharepoint powershell

我有一个包含数千条记录的列表,我需要它们是唯一的。我在网上找到了一个PowerShell脚本,如果我只有一个唯一的列,它将起作用。但是,我必须按2列分组,我无法弄清楚如何使其工作。

例如,如果我在SP列表中包含此数据,则仅当两列都重复时才应删除项目。

Title     Carrier
1         Carrier1
1         Carrier1     *Remove This One
12        Carrier1
12        Carrier2
100       Carrier1 
100       Carrier1     *Remove This One
100       Carrier2

以下是我在网上找到的代码示例,该代码示例适用于1列,但不适用于2列。

cls
if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) {
     Add-PSSnapin Microsoft.SharePoint.PowerShell;
}

$ListName = "DuplicateTest"

$web = Get-SPWeb -identity "http://MyVM/sites/TestSite"
$list = $web.Lists[$ListName]

$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.Items.DeleteItemById($_.ID)} 
    Write-Progress -PercentComplete ($count / $max * 100) -Activity "$count duplicates removed" -Status "In Progress" 
    $count++ 
}

1 个答案:

答案 0 :(得分:1)

实际上,您可能希望将Select-Object-Unique-Property参数一起使用。

$Deduped$list.Items.GetDataTable() | Select-Object -Property Title, Carrier -Unique;