【发布时间】:2021-01-15 17:22:45
【问题描述】:
下面的脚本适用于一个小型共享点列表,但我似乎无法让它适用于超过 700,000 行的大型列表。
任何建议将不胜感激。
$list = "Audit Only Test"
$items = Get-PnPListItem -List $listName -Fields "Title","Created","ID","ShiftDate"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -UseWebLogin
#Define Query to get list items
$Query= "<View Scope='RecursiveAll'>
<Query>
<Where>
<And>
<Lt>
<FieldRef Name='ShiftDate' Type='DateTime'/>
<Value Type='DateTime' IncludeTimeValue='TRUE'>
<Today OffsetDays='-7'/>
</Value>
</Lt>
<Eq>
<FieldRef Name='FSObjType' /><Value Type='Integer'>0</Value>
</Eq>
</And>
</Where>
</Query>
<RowLimit>500</RowLimit>
</View>"
#Get All Items from the List in batches
$ListItems = Get-PnPListItem -List $ListName -Query $Query -PageSize 500
#Write-host "Total Number of Items Found:"$ListItems.count
foreach($item in $listItems)
{
Write-Host "Deleting Item - $($item.Id)"
#$item.deleteobject()
Remove-PnPListItem -List $listName -Identity $item.Id -Force -ErrorAction Stop
}
Write-Host -f Green "`nAll List Items Deleted Successfully!" ```
【问题讨论】:
-
如果您正在执行行删除,我建议您只检索匹配过滤器实际需要的列并执行删除。在您的示例中,它将是删除的 ID 字段和过滤器的 ShiftDate 字段:
$items = Get-PnPListItem -List $listName -Fields "ID","ShiftDate" -
列表中有 700,000 个项目,我希望 ShiftDate 在超过 5,000 个项目之前声明一个索引,否则性能会非常缓慢。
标签: sharepoint