-->

среда, 24 июля 2013 г.

Поиск больших списков SharePoint с помошью PowerShell

Сегодня решил рассмотреть вариант поиска больших списков с помошью PowerShell

Наткнувшийсь на итересную статью (спасибо автору), решил ее до работать. Нужно было сделать решение более универсальным.
Для этого добавил возможность пройти по нескольким семействам сайтов (указываем в переменной $arraySite) и выводить только те списки и библиотеки в которых количесво элементов больше требуемого (указываем нужное значение переменной  $maxvalue ).


Теперь перейдем к коду:


cls
if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) {
 Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
#Перечень семейств сайтов в которых нужно найти списки, адреса через запятую
$arraySite =
"http://server/ SiteCollection1",
"http://server/ SiteCollection2"

$maxvalue = 2000 #максимальное количество элементов списка 


$ListsInfo = @{}
$TotalItems = 0
Foreach ($currentSite in $arraySite)
{
   $SiteCollection = Get-SPSite $currentSite
   ForEach ($Site in $SiteCollection.AllWebs)
   {
                 ForEach ($List in $Site.Lists)
                 {
                                 if ($List.ItemCount -gt $maxvalue) 
                                {
                                   $ListsInfo.Add($Site.Url + " - " + $List.Title, $List.ItemCount)
                                   $TotalItems += $List.ItemCount
                                }
                 }
   }
}
$ListsInfo.GetEnumerator() | sort name | Format-Table -Autosize
Write-Host "Количество списков: " $ListsInfo.Count
Write-Host "Общее количество элементов: " $TotalItems