PowerShell Script To Get Web Application Admin Data

At some point, SharePoint Admins may need to obtain a web application's information, like total sites underneath, size of each site, total list count, site admin's login name, site owners, site URL etc. 

The below PowerShell script does the job at one shot and exports the data into .CSV.

You can customize the script based on your requirement. 

  1. If((Get - PSSnapIn - Name Microsoft.SharePoint.PowerShell - ErrorAction SilentlyContinue) - eq $null) {  
  2.     Add - PSSnapIn - Name Microsoft.SharePoint.PowerShell  
  3. }  
  4. #using the reflection assembly  
  5. [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")  
  6. # Give the Web Application Name  
  7. $webApp = 'http://webappname'  
  8. #Give the File name of the CSC  
  9. $filename = "FileName.csv";  
  10. $ListItemCollection = @()  
  11. $SPWebApp = Get - SPWebApplication $webApp  
  12. # iterating all the sites in the Web Application  
  13. foreach($SPSite in $SPWebApp.Sites) {  
  14.         if ($SPSite - ne $null) {  
  15.             foreach($SPWeb in $SPSite.AllWebs) {  
  16.                 $WebSize = GetFolderSize($SPWeb.RootFolder)  
  17.                 # Calling the function to calculate Folder Size  
  18.                 # Get Recycle Bin Size  
  19.                 foreach($RecycleBinItem in $SPWeb.RecycleBin) {  
  20.                     $WebSize += $RecycleBinItem.Size  
  21.                 }  
  22.                 #To get the Sub Site Size in MB  
  23.                 $subSiteSize = [Math]::Round($websize / 1 MB, 2)  
  24.                 # To get site owners in the associated owners group  
  25.                 $siteOwners = ""  
  26.                 $siteOwnersGID = ""  
  27.                 foreach($ownerGroup in $SPWeb.AssociatedOwnerGroup) {  
  28.                     foreach($owner in $ownerGroup.Users) {  
  29.                         $siteOwners = $($owner.DisplayName) + "|" + $siteOwners  
  30.                         $siteOwnersGID = $($owner.UserLogin.Split('\')[1]) + "|" + $siteOwnersGID  
  31.                             }  
  32.                         }  
  33.                                                                    
  34.                         #To Get Site Admins  
  35.                         $siteAdmins = ""  
  36.                         foreach($siteAdmin in $SPWeb.SiteAdministrators) {  
  37.                             $siteAdmins = $siteAdmin.LoginName + "|" + $siteAdmins  
  38.                         }#Object for gathering all the required columns  
  39.                         $ExportItem = New - Object PSObject  
  40.                         write - host "DATA"  
  41.                         $SPWeb.Title $siteOwners $siteOwnersGID $siteAdmins $SPWeb.Url $SPWeb.Lists.Count $SPWeb.LastItemModifiedDate $([Math]::Round($SPSite.Usage.Storage / 1 MB, 2)) $subSiteSize  
  42.                         $ExportItem | Add - Member - MemberType NoteProperty - name "Title" - value $SPWeb.Title  
  43.                         $ExportItem | Add - Member - MemberType NoteProperty - name "Site Owner(s)" - value $siteOwners  
  44.                         $ExportItem | Add - Member - MemberType NoteProperty - name "Site Owner(s) GID" - value $siteOwnersGID  
  45.                         $ExportItem | Add - Member - MemberType NoteProperty - name "Site Admin(s)" - value $siteAdmins  
  46.                         $ExportItem | Add - Member - MemberType NoteProperty - name "Site Url" - value $SPWeb.Url  
  47.                         $ExportItem | Add - Member - MemberType NoteProperty - name "List Count" - value $SPWeb.Lists.Count  
  48.                         $ExportItem | Add - Member - MemberType NoteProperty - name "Last Modified Date" - value $SPWeb.LastItemModifiedDate  
  49.                         $ExportItem | Add - Member - MemberType NoteProperty - name "Site Collection Size (MB)" - value $([Math]::Round($SPSite.Usage.Storage / 1 MB, 2))  
  50.                         $ExportItem | Add - Member - MemberType NoteProperty - name "Sub Site Size (MB)" - value $subSiteSize  
  51.                         # Exporting to.CSV File  
  52.                         $ListItemCollection += $ExportItem  
  53.                         $destination = "D:\" + $filename  
  54.                         $ListItemCollection | Export - CSV $destination– NoTypeInformation  
  55.                     }  
  56.                 }  
  57.             }  
  58.             #Function to calculate folder size  
  59.   
  60.             function GetFolderSize($folder) {  
  61.                 $FolderSize = 0  
  62.                 foreach($File in $Folder.Files) {  
  63.                   #Get File Size  
  64.                     $FolderSize += $file.TotalLength;  
  65.                   #Get the Versions Size  
  66.                     foreach($fileVersion in $file.Versions) {  
  67.                         $FolderSize += $fileVersion.Size  
  68.                     }  
  69.                 }  
  70.                 foreach($subfolder in $folder.SubFolders) {  
  71.                     $FolderSize += GetFolderSize $SubFolder  
  72.                 }  
  73.                 return $FolderSize  
  74.             }  

 OutPut ScreenShot

OutPut