Add-PSSnapin "*Sharepoint*"
#Get Size of all Sub-sites in a sharepoint Farm
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
# Function to calculate folder size
Function CalculateFolderSize($Folder)
{
[long]$FolderSize = 0
foreach ($File in $Folder.Files)
{
#Get File Size
$FolderSize += $file.TotalLength;
#Get the Versions Size
foreach ($FileVersion in $File.Versions)
{
$FolderSize += $FileVersion.Size
}
}
#Iterate through all subfolders
foreach ($SubFolder in $Folder.SubFolders)
{
#Call the function recursively
$FolderSize += CalculateFolderSize $SubFolder
}
return $FolderSize
}
$sizelog = "D:\Stage_subsites_Size.csv"
Add-Content -Path $sizelog -Value "WebappURL,Sitecollection_URL,WebUrl,Size"
$webapps = Get-SPWebApplication
foreach($WebApp in $webapps)
{
Write-Host "Running Web application" $WebApp.Url
$Sites = Get-SPSite -WebApplication $WebApp -Limit All
Write-Host "Site collections" $Sites
foreach ($site in $Sites)
{
Write-Host "Running site" $site
#$Site1 = new-object Microsoft.SharePoint.SPSite($site)
foreach($Web in $site.AllWebs)
{
Write-Host "Running web" $web
#Call function to calculate Folder Size
[long]$WebSize = CalculateFolderSize($Web.RootFolder)
#Get Recycle Bin Size
foreach($RecycleBinItem in $Web.RecycleBin)
{
$WebSize += $RecycleBinItem.Size
}
$Size = [Math]::Round($WebSize/1MB, 2)
Write-Host $web.Url ":`t" $Size "MB"
$CSVoutput = $webapp.url + "*" + $site.url +"*"+ $web.Url + "*" + $Size
$csvoutput | Out-File $sizelog -Append
}}}