Monday, March 27, 2023

Script to get all subsites size from Sharepoint farm

 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


}}}

No comments:

Post a Comment