понедельник, 19 июля 2010 г.

SharePoint and PowerShell: How to delete all empty lists

Решил я попрактиковаться в PowerShell'е и в качестве темы для экспериментов взял просьбу одного пользователя удалить пустые листы на всех подсайтах одного сайта:

[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

function Get-SPAllSubWebs($web)
{
 Write-Output $web;
 foreach($w in $web.Webs)
 {
  Get-SPAllSubWebs($w);
  $w.Dispose();
 }
}

$url = "http://server/myroot"
$site = new-Object Microsoft.SharePoint.SPSite($url)

Get-SPAllSubWebs $site.OpenWeb() | 
  foreach { $_.Lists} |
   where {$_.ItemCount -eq 0 -and  $_.Hidden -eq 0 -and $_.AllowDeletion -eq 1 } |
    foreach { Write-host $_.RootFolder.ServerRelativeUrl , $_.Delete()}


PS: Для пробы можете убрать строчку , $_.Delete() чтобы отключить реальное удаление

Комментариев нет: