Определить размера сайта SharePoint

Когда SharePoint портал разрастается, то бывает необходимо отслеживать наиболее большие сайты, чтобы понимать, что можно вынести в отдельные коллекции сайтов для оптимизации работы портала. Ниже приведен полезный скрипт, который считает размер сайта SharePoint и его подсайтов. Для быстрорастущих сайтов можно настроить на ежедневный запуск, чтоб не упустить момент.

<# Script for calculating SharePoint SPWeb size #> 
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) 
{ 
    Write-Host "Подключение надстроек SharePoint" 
    Add-PSSnapin Microsoft.SharePoint.PowerShell 
} 

function GetWebSizes ($StartWeb) 
    { 
        $web = Get-SPWeb $StartWeb 
        [long]$total = 0 
        $total += GetWebSize -Web $web 
        $total += GetSubWebSizes -Web $web 
        $totalInMb = ($total/1024)/1024 
        $totalInMb = "{0:N2}" -f $totalInMb 
        $totalInGb = (($total/1024)/1024)/1024 
        $totalInGb = "{0:N2}" -f $totalInGb 
        write-host "Total size of all sites below" $StartWeb "is" $total "Bytes," 
        write-host "which is" $totalInMb "MB or" $totalInGb "GB" 
        $web.Dispose() 
    } 

    function GetWebSize ($Web) 
    { 
        [long]$subtotal = 0 
        foreach ($folder in $Web.Folders) 
        { 
            $subtotal += GetFolderSize -Folder $folder 
        } 

        write-host "Site" $Web.Title "is" $subtotal "KB" 
        return $subtotal 
    } 

    function GetSubWebSizes ($Web) 
    { 
        [long]$subtotal = 0 
        foreach ($subweb in $Web.GetSubwebsForCurrentUser()) 
        { 
            [long]$webtotal = 0 
            foreach ($folder in $subweb.Folders) 
            { 
                $webtotal += GetFolderSize -Folder $folder 
            } 
            write-host "Site" $subweb.Title "is" $webtotal "Bytes" 
            $subtotal += $webtotal 
            $subtotal += GetSubWebSizes -Web $subweb 
        } 
        return $subtotal 
    } 

    function GetFolderSize ($Folder) 
    { 
        [long]$folderSize = 0 
        foreach ($file in $Folder.Files) 
        { 
            $folderSize += $file.Length; 
        } 
        foreach ($fd in $Folder.SubFolders) 
        { 
            $folderSize += GetFolderSize -Folder $fd 
        } 
        return $folderSize 
    } 
    GetWebSizes -StartWeb http://sp10/mysite/

 


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

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment






MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика