#Import the csv file that holds the parameters we need to filter the SharePoint
$csv = Import-Csv d:\temp\importfilename.csv
#An error file - Clear this file in case anything was there from a previous run Clear-Content d:\temp\checkTheseFailedDeletes.txt
#Get the SharePoint web(site)
$web = Get-SPWeb http://sharepointsite
#Get the SharePoint list
$list = $web.Lists["Your List Name Here"]
$itemsTotal = 0
$count = 0
#Loop through each row of the input .csv file
foreach ($rox in $csv)
{
#Assign each column's value to a variable
$thisParam1 = $row.Param1ColumnFromCSV
$thisParam2 = $row.Param2ColumnFromCSV
#Build the CAML query and execute it on the list
$query = New-Object Microsoft.SharePoint.SPQuery
$query.ViewAttributes = "Scope='Recursive'"
$caml = "
$query.Query = $caml
$items = $list.GetItems($query)
#Delete the item from the list if found
if ($items.Count -gt 0)
{
$items | % { list.GetItemById($_.Id).Delete() }
$caml = ""
$count++
}
#Write records that were not found in the list to a text file to manually check if necessary
else
{
$caml = ""
$writeString = $thisParam1 + ", " + $thisParam2
Add-Content d:\temp\checkTheseFailedDeletes.txt $writeString
}
$itemsTotal++
}
Write-Host $itemsTotal "records processed ===> " $count "records deleted"
$web.Dispose()