Wednesday, 15 June 2016

PowerShell script to get the sites report under a site collection with size in MB

PowerShell script to get the sites report under a site collection with size in MB

# Returns size of site, subsites, folders, outputs in .\SiteSize.html
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$rootUrl = "Site Collection URL";
$rootSite = new-object Microsoft.SharePoint.SPSite($rootUrl);
$array = @()
$siteCollectionSize = 0;
# Function calculating folder size
function GetFolderSize($folder)
{
$filesize = 0;
foreach ($file in $folder.Files)
{
$filesize += $file.TotalLength;
foreach ($fileVersion in $file.Versions)
{
$filesize += $fileVersion.Size;
}
}
foreach ($subfolder in $folder.SubFolders)
{
$filesize += GetFolderSize $subfolder
}
return $filesize;
}
# Function to format in MB
function FormatBytes ($bytes)
{
switch ($bytes)
{
{$bytes -ge 1TB} {"{0:n$sigDigits}" -f ($bytes/1TB) + " TB" ; break}
{$bytes -ge 1GB} {"{0:n$sigDigits}" -f ($bytes/1GB) + " GB" ; break}
{$bytes -ge 1MB} {"{0:n$sigDigits}" -f ($bytes/1MB) + " MB" ; break}
{$bytes -ge 1KB} {"{0:n$sigDigits}" -f ($bytes/1KB) + " KB" ; break}
Default { "{0:n$sigDigits}" -f $bytes + " Bytes" }
}
}
foreach($web in $rootSite.AllWebs)
{
if ($web.Url.StartsWith($rootUrl))
{
$websize = GetFolderSize $web.RootFolder;
foreach($recycleBinItem in $web.RecycleBin)
{
$websize += $recycleBinItem.Size;
}
$formatSize = FormatBytes $websize;
$url = $web.Url;
# Create object and store in array
$obj = New-Object System.Object
$obj | Add-Member -type NoteProperty -name "Description" -value "$url"
$obj | Add-Member -type NoteProperty -name "Size" -value "$formatSize"
$array += $obj
$siteCollectionSize += $websize
}
}
$formatSize = FormatBytes $siteCollectionSize;
# Create object and store in array
$obj = New-Object System.Object
$obj | Add-Member -type NoteProperty -name "Description" -value "[Total Size]"
$obj | Add-Member -type NoteProperty -name "Size" -value "[$formatSize]"
$array += $obj
# Display
foreach($item in $array)
{
write-output $item
}
# Write to HTML
$array | Select-Object | ConvertTo-Html -title "Site Size" | Set-Content .\SiteSize.html
====================================================================

For more information about SharePoint visit page MySharepoint

No comments:

Post a Comment