当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell:批处理大型列表以修复“尝试的操作被禁止,因为它超出了管理员强制执行的列表视图阈值。” SharePoint 中的错误

作者:精品下载站 日期:2024-12-14 14:38:36 浏览:16 分类:玩电脑

PowerShell:批处理大型列表以修复“尝试的操作被禁止,因为它超出了管理员强制执行的列表视图阈值。” SharePoint 中的错误


问题:当处理超过 5000 个列表项的大型列表时,任何操作(例如读取/更新/删除)均由列表视图阈值控制。当您尝试处理大型列表项时,您会收到一条错误消息:尝试的操作被禁止,因为它超出了管理员强制执行的列表视图阈值。

解决方案:批量处理大型列表项目

您始终可以在 SharePoint 管理中心网站中增加列表视图阈值和其他限制设置;如果无法做到这一点,可以通过以下方法批量处理列表项来缓解此问题:

此脚本最终会出现列表视图阈值错误:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Set config variables
$WebURL="https://intranet.crescent.com"
$ListName ="LargeList"

#Get Web and List Objects
$Web = Get-SPWeb $WebURL
$List = $Web.Lists[$ListName]

$ListItems = $List.Items
ForEach($Item in $ListItems)
{
    Write-host "Processing List Item:"$Item.id
}

[玩转系统] PowerShell:批处理大型列表以修复“尝试的操作被禁止,因为它超出了管理员强制执行的列表视图阈值。” SharePoint 中的错误

这是通过批处理工作的:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Set config variables
$WebURL="https://intranet.crescent.com"
$ListName ="LargeList"

#Get Web and Objects
$Web = Get-SPWeb $WebURL
$List = $Web.Lists[$ListName]

#Query to batch process
$Query = New-Object Microsoft.SharePoint.SPQuery
$Query.ViewAttributes = "Scope='Recursive'"
$Query.RowLimit = "2000"

Do {
    #Get List Items defined by the Query
    $ListItems = $List.GetItems($Query)
    $Query.ListItemCollectionPosition = $ListItems.ListItemCollectionPosition

    #Loop through each list Item                
    ForEach($Item in $ListItems)
    {
        Write-Host "Processing List Item:" $Item.Id
        #$List.GetItemById($Item.Id).delete()
    }
} While ($Query.ListItemCollectionPosition -ne $Null)

这是 SharePoint Online 的另一篇文章,用于处理大型列表而不会出现超出阈值的错误:SharePoint Online:如何在 PowerShell 中处理大型列表?

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯