2014-01-24 67 views
0

我有一个包含数千个记录的列表,我需要它们是唯一的。我在网上发现了一个PowerShell脚本,如果我只有一个唯一的列,那么它将起作用。但是,我必须分成2列,我无法弄清楚如何使其工作。删除SharePoint列表中的重复项目

例如,如果我在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++ 
} 
+0

想通了, 集团,对象名称,运营商 简单而有效。 –

回答

1

事实上,你可能想使用Select-Object-Unique-Property参数。

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