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;
$rootSite = new-object Microsoft.SharePoint.SPSite($rootUrl);
$array = @()
$siteCollectionSize = 0;
# Function calculating folder size
function GetFolderSize($folder)
{
$filesize = 0;
function GetFolderSize($folder)
{
$filesize = 0;
foreach ($file in $folder.Files)
{
$filesize += $file.TotalLength;
{
$filesize += $file.TotalLength;
foreach ($fileVersion in $file.Versions)
{
$filesize += $fileVersion.Size;
}
}
{
$filesize += $fileVersion.Size;
}
}
foreach ($subfolder in $folder.SubFolders)
{
$filesize += GetFolderSize $subfolder
}
{
$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;
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;
}
{
$websize += $recycleBinItem.Size;
}
$formatSize = FormatBytes $websize;
$url = $web.Url;
$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
$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
$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
}
foreach($item in $array)
{
write-output $item
}
# Write to HTML
$array | Select-Object | ConvertTo-Html -title "Site Size" | Set-Content .\SiteSize.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