Powershell CSOM clear list items / delete all items
clear
# Connect-PNPOnline -url $ProdWaveplaceURL -UseWebLogin -ErrorAction Stop
# Disconnect-PnPOnline
$listTitle = "testTaxo"
$list = Get-PnPList -Identity $listTitle -ThrowExceptionIfListNotFound
$ctx = Get-PnPContext
$page = $null
$pageNumber = 0;
$rowLimit = 100
$startDate = Get-Date
$deletedItemsCount = 0;
Do{
$stringBuilder = New-Object System.Text.StringBuilder
$stringBuilder.Append("<View scope='RecursiveAll'>") | Out-Null
$stringBuilder.Append("<Query><Where></Where>")| Out-Null
$stringBuilder.Append("<Orderby><Fieldref ascending='TRUE' name='ID'></Fieldref></Orderby>")| Out-Null
$stringBuilder.Append("</Query>")| Out-Null
$stringBuilder.Append("<Viewfields>")| Out-Null
$stringBuilder.Append("<Fieldref name='ID' />")| Out-Null
$stringBuilder.Append("</Viewfields>")| Out-Null
$stringBuilder.Append("<Rowlimit paged='TRUE'>$($rowLimit)</Rowlimit>")| Out-Null
$stringBuilder.Append("</View>")| Out-Null
$spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery
$spqQuery.ViewXml = $stringBuilder.ToString();
$spqQuery.ListItemCollectionPosition = $page
$pageNumber ++;
$spqQuery.ViewXml = $stringBuilder.ToString();
$itemki=$list.GetItems($spqQuery);
$spqQuery.ListItemCollectionPosition = $itemki.ListItemCollectionPosition
$ctx.Load($itemki)
$ctx.ExecuteQuery();
Write-Host "################## PAGE " $($page.PagingInfo) " #########################"
Write-Host "processing query results. Recs: $($itemki.Count)"
$Counter = $itemki.Count;
if($itemki.Count -eq 0){
exit 0
}
do{
$itemki[$Counter - 1].DeleteObject()
$Counter--
$deletedItemsCount++
}while($Counter -gt 0)
Invoke-PnPQuery
Write-Host "deletedItemsCount $($deletedItemsCount)"
$page = $itemki.ListItemCollectionPosition
$comp = $endDate - $startDate
$endDate = Get-Date
Write-Host "time to delete $($rowLimit) elements : Days '$($comp.Days)' Hours '$($comp.Hours)' Minutes '$($comp.Minutes)' Seconds '$($comp.Seconds)'"
}
Until($page -eq $null)
$comp = $endDate - $startDate
Write-Host "time to delete : Days '$($comp.Days)' Hours '$($comp.Hours)' Minutes '$($comp.Minutes)' Seconds '$($comp.Seconds)'"