SharePoint:要获取列表/库中有> 5000个项目的每个视图的数量,

时间:2018-12-26 12:57:19

标签: powershell sharepoint csom caml

正如标题所述,我正在尝试使用powershell生成报告(CSV),该报告输出具有5000多个项目的任何视图的名称及其项目计数。

列表/库名称,视图名称,视图项计数

我拥有的脚本适用于所有<5000个项目的视图,但是在处理较大列表时达到列表视图阈值。我知道为什么它失败了,但是我对如何解决这个问题感到迷茫。 有没有一种方法可以对结果进行分页并遍历它们而无需以任何方式编辑视图,也可以通过其他方法来获得所需的结果?

谢谢:

    #Loop through each web in the current site collection
    foreach($Web in $SiteCollectionContext.Web.Webs)
    {      
        $webContext= New-Object Microsoft.SharePoint.Client.ClientContext($Web.Url)             
        $webContext.Credentials = $Credentials             
        $webContext.Load($webContext.Web)
        $webContext.Load($webContext.Web.Lists)            
        $webContext.ExecuteQuery()

        #Loop through each List 
        foreach($List in $webContext.Web.Lists)
        {
          if($List.ItemCount -gt 5000){

            $li=$webContext.Web.Lists.GetByTitle($List.Title)
            $webContext.load($li)                                      
            $webContext.load($li.RootFolder)   
            $webContext.load($li.Views)
            $webContext.ExecuteQuery()

            #Loop through all of the views on the current list
            foreach($view in $li.Views){    

              #Use the current view's query filter for our request
              $viewQuery = new-object Microsoft.SharePoint.Client.CamlQuery;
              $viewQuery.ViewXml = ("<View><Query>{0}</Query></View>" -f $view.Query)                   
              $largeView = $li.GetItems($viewQuery)
              $webContext.load($largeView)    
              $webContext.ExecuteQuery()
              #############################################FAILS HERE
              $viewcount = $largeView.Count 

              if($viewcount -gt 5000){
                #Do stuff to output to CSV
              }
            }
          }     
        }                  
    }

1 个答案:

答案 0 :(得分:0)

在本文的帮助下,我设法找到了解决方案: https://www.sptrenches.com/2016/06/get-all-items-in-5000-large-list-with.html

现在就请客。