SharePoint: нужно рассчитать количество просмотров в списке / библиотеке, где есть> 5000 элементов - PullRequest
0 голосов
/ 26 декабря 2018

Как гласит заголовок, я пытаюсь сгенерировать отчет (CSV) с использованием powershell, который выводит имена любых представлений с более чем 5000 элементов и их количество элементов.

Список / Имя библиотеки, ПредставлениеName, View item Count

У меня есть скрипт, который отлично работает для любых представлений с <5000 элементами, но достигает порогового значения представления списка при работе с большими списками.Я понимаю, почему это не удается, но я не знаю, как обойти эту проблему.Есть ли способ разбить на страницы результаты и просмотреть их, не редактируя представление каким-либо образом, или другим способом, позволяющим мне получить желаемый результат? </p>

Спасибо:

    #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 голосов
/ 26 декабря 2018

Мне удалось найти решение с помощью этой статьи: https://www.sptrenches.com/2016/06/get-all-items-in-5000-large-list-with.html

Работа угощение сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...