I am asked to generate a site report to identify which all site collections/ sites / sub sites are not in use for so long, so that they can be archived.
I choose to write a PowerShell script to visit all the site collections, sites, sub sites and generate a CSV report with below information. Based on the last accessed/modified date, decision making happens whether to archive/delete the site.
I choose to write a PowerShell script to visit all the site collections, sites, sub sites and generate a CSV report with below information. Based on the last accessed/modified date, decision making happens whether to archive/delete the site.
Site Title
Site URL
Site Users Count
Site Last Modified
Web Last Modified (item content in a web)
List Title (lists under a web)
List Items Count
Below is the PowerShell script to generate the site report.
$timestamp = get-date -format "yyyyMMdd_hhmmtt"
$filenameStart = "MSHSSiteReport"
$logfile = ("D:\{0}{1}.csv" -f $filenamestart, $timestamp)
$header = "webname,weburl,usercount,sitelastmodified,weblastmodified,archive,listname,itemcount"
$header | out-file -FilePath $logfile
$result = @()
# Get All Web Applications
$WebApps=Get-SPWebApplication
foreach($webApp in $WebApps)
{
if(!$webApp.Url.StartsWith("https://workspace.mountsinai.org/"))
{
continue
}
Write-Host $webApp.Url -ForegroundColor Red
foreach ($SPsite in $webApp.Sites)
{
Write-Host $SPsite.Url -BackgroundColor DarkCyan
# get the collection of webs
foreach($SPweb in $SPsite.AllWebs)
{
if($SPsite.Url -eq $SPweb.Url)
{
$SizeInKB = $SPsite.Usage.Storage
$SizeInGB = $SizeInKB/1024/1024 #/1024
$SizeInGB = [math]::Round($SizeInGB,2)
Write-Host $SizeInGB MB -ForegroundColor Yellow
}
$siteTitle = $SPweb.title
$siteUrl = $spweb.URL
$userCount = $SPweb.Users.Count
$siteLastModified = $SPsite.LastContentModifiedDate
$webLastModified = $SPweb.LastItemModifiedDate
$archive = "False"
if($SPweb.LastItemModifiedDate -lt ((Get-Date).AddMonths(-12)))
{
$archive = "True"
}
write-host $siteTitle ":" $siteUrl ":" $userCount ":" $webLastModified ":" $archive
$report = New-Object System.Object
$report | Add-Member -MemberType NoteProperty -Name "Title" -Value $siteTitle
$report | Add-Member -MemberType NoteProperty -Name "URL" -Value $siteUrl
$report | Add-Member -MemberType NoteProperty -Name "UserCount" -Value $userCount
$report | Add-Member -MemberType NoteProperty -Name "SiteLastModified" -Value $siteLastModified
$report | Add-Member -MemberType NoteProperty -Name "WebLastModified" -Value $webLastModified
$report | Add-Member -MemberType NoteProperty -Name "Archive" -Value $archive
$report | Add-Member -MemberType NoteProperty -Name "List" -Value ""
$report | Add-Member -MemberType NoteProperty -Name "ItemCount" -Value ""
$result += $report
Write-Host ([String]::Format("Procesing web {0}",$SPweb.Url)) -foregroundcolor Yellow
foreach($l in $SPweb.Lists)
{
Write-Host ([String]::Format("List, '{0}', has {1} items.",$l.Title, $l.ItemCount)) -foregroundcolor Green
$report = New-Object System.Object
$report | Add-Member -MemberType NoteProperty -Name "Title" -Value ""
$report | Add-Member -MemberType NoteProperty -Name "URL" -Value ""
$report | Add-Member -MemberType NoteProperty -Name "UserCount" -Value ""
$report | Add-Member -MemberType NoteProperty -Name "SiteLastModified" -Value ""
$report | Add-Member -MemberType NoteProperty -Name "WebLastModified" -Value ""
$report | Add-Member -MemberType NoteProperty -Name "Archive" -Value $archive
$report | Add-Member -MemberType NoteProperty -Name "List" -Value $l.Title
$report | Add-Member -MemberType NoteProperty -Name "ItemCount" -Value $l.ItemCount
$result += $report
}
}
}
}
$result | Export-Csv -NoTypeInformation -Path $logfile
No comments:
Post a Comment