2010
364 TopicsAutomating SharePoint Site Status Reporting with PowerShell
Introduction Migrating Microsoft 365 workloads is a critical step during organizational transitions such as mergers or de‑mergers. SharePoint site collections often contain business‑critical data, and ensuring visibility into their readiness is essential for a smooth migration. To address this, I developed a PowerShell script that automatically generates a SharePoint Site Status Report, categorizing sites into Active, Read‑Only, and Offline. This report provides administrators and migration engineers with actionable insights to plan and execute migrations confidently. Why This Matters Visibility: Quickly assess site readiness across all web applications. Governance: Ensure compliance and proper access controls. Efficiency: Automate reporting to reduce manual effort. Risk Mitigation: Identify offline or read‑only sites before migration. How It Works The script leverages the SharePoint Management Shell and runs under the Farm Account with elevated permissions. It performs the following steps: Loads SharePoint cmdlets. Iterates through all web applications. Categorizes sites into Active, Read‑Only, and Offline. Compiles results into a structured CSV/Excel/HTML report. Sends the report via email to stakeholders. Key PowerShell Cmdlets Add-PSSnapin Microsoft.SharePoint.PowerShell Get-SPWebApplication Get-SPSite -WebApplication -Limit All $site.ReadOnly / $site.Status Export-Csv Send-MailMessage Parameters to Replace Before running the script, update these placeholders: SMTP Server → mail.company.com → replace with your mail server Sender Address ($from) → email address removed for privacy reasons → replace with reporting account Recipient Address ($to) → email address removed for privacy reasons → replace with stakeholder distribution list Email Subject ($subject) → "SharePoint Site Status Report" → customize for clarity Report File Path ($csvPath) → C:\Reports\SharePoint_SiteStatusReport.csv → replace with desired location Web Application URLs → ensure correct farm references Execution Context → must run under Farm Account Conclusion This automated reporting solution provides clarity, governance, and efficiency during SharePoint migrations. By categorizing sites and delivering structured reports, administrators can prioritize tasks, mitigate risks, and ensure a seamless transition to Microsoft 365. Code: #Adding Snapin for SharePoint #Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue $TodayDate =Get-Date Write-Host $TodayDate $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } ##My Connect # $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # # WebSites $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # ##Websites # $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # ## Websites # $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # ##FGC-SalesShareWebSites # $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } ##WebSites # $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } ##WebSites # $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } ##WebSites # $FileName = "C:\Results_Active_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_Readonly_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } # $FileName = "C:\Results_NoAccess_WebSites.txt" if (Test-Path $FileName) { Remove-Item $FileName } Add-PSSnapin Microsoft.SharePoint.Powershell [string[]]$WebapplicationList = "" Foreach($Webapp in $WebapplicationList) { Write-Host $Webapp $displaywebappname=Get-SPWebApplication $webapp $webappname=$displaywebappname.name Write-Host $webappname $Sites = Get-SPWebApplication $webapp | Get-SPSite -limit all | foreach { if ($_.ReadOnly -eq $false -and $_.ReadLocked -eq $false -and $_.WriteLocked -eq $false) { $Result =”Site is Active” $save2= "Results_Active_${webappname}.txt" #Write-Host $save2 $saveCSVactive="Results_Active_${webappname}.csv" $_.RootWeb.Title +”`t” + $_.URL + “`t” + $Result | Out-File $save2 -append #$_.RootWeb.Title +”`t” + $_.URL + “`t” + $Result | Out-File $saveCSVactive -Append } elseif ($_.ReadOnly -eq $true -and $_.ReadLocked -eq $false -and $_.WriteLocked -eq $true) { $Result = “Site is Read-Only” $save1= "Results_Readonly_${webappname}.txt" $_.RootWeb.Title +”`t” + $_.URL + “`t” + $Result | Out-File $save1 -Append } elseif ($_.ReadOnly -eq $null -and $_.ReadLocked -eq $null -and $_.WriteLocked -eq $null) { $Result=”Site status is No Access” $save3= "Results_NoAccess_${webappname}.txt" #$_.RootWeb.Title +”`t” + $_.URL + “`t” + $Result | Out-File $save3 -Append $_.URL +”`t” + $_.RootWeb.Title + “`t” + $Result | Out-File $save3 -Append } } } $TodayDate =Get-Date Write-Host $TodayDate sleep -Seconds 100 #Active Sites WebSites $ActiveSites_Websites= Get-Content -Path "C:\Results_Active_WebSites.txt" | Measure-Object Write-Host "Websites Active sites" $ActiveSites_Websites.count $Websites_ActiveSitescount = $ActiveSites_Websites.count #Read-only Sites WebSites $ReadonlySites_Websites=Get-Content -Path "C:\Results_Readonly_WebSites.txt" | Measure-Object Write-Host "Websites Read-only Sites" $ReadonlySites_Websites.count $Websites_Readonlysitescount=$ReadonlySites_Websites.count #No-Access Sites WebSites $NoaccessSies_Websites= Get-Content -Path "C:\Results_NoAccess_WebSites.txt" | Measure-Object Write-Host "Websites No-Access Sites" $NoaccessSies_Websites.count $Websites_NoAccessSitesCount=$NoaccessSies_Websites.count #Active Sites WebSites $ActiveSites_WebSites= Get-Content -Path "C:\Results_Active_WebSites.txt" | Measure-Object Write-Host "WebSites Active sites" $ActiveSites_WebSites.count $WebSites_ActiveSitescount = $ActiveSites_WebSites.count #Read-only Sites WebSites #$Readonlysite_WebSites =Get-Content -Path C:\Results_Readonly_Websites.txt | Measure-Object #If($Readonlysite_WebSites -eq $null) #{ #$WebSites_Readonlysitecount ="0" #} #else{ $Readonlysite_WebSites =Get-Content -Path "C:\Results_Readonly_WebSites.txt" | Measure-Object Write-Host "WebSites Readonly Sites" $Readonlysite_WebSites.count $WebSites_ReadonlySitesCount= $Readonlysite_WebSites.count # Write-Host $WebSites_ReadonlySitesCount #} #WebSites - No Access Sites #$NoAccessSites_WebSites= Get-Content -Path "C:\Results_NoAccess_Websites.txt" $NoAccessSites_WebSites= Get-Content -Path "C:\Results_NoAccess_WebSites.txt" | Measure-Object Write-Host "WebSites NoAccess Sites" $NoAccessSites_WebSites.count # #Write-Host "Site Count $($NoAccessSites_WebSites.Count)" $WebSites_NoAccessSitesCount= $NoAccessSites_WebSites.count ################################################################## # #Active Sites Websites $ActiveSites_WebSites= Get-Content -Path "C:\Results_Active_Websites.txt" | Measure-Object Write-Host "WebSites Active sites" $ActiveSites_WebSites.count $WebSites_ActiveSitescount = $ActiveSites_WebSites.count # # #Read-only Sites WebSites $ReadonlySites_WebSites=Get-Content -Path "C:\Results_Readonly_Websites.txt" | Measure-Object Write-Host "WebSites Read-only Sites" $ReadonlySites_WebSites.count $WebSites_Readonlysitescount=$ReadonlySites_WebSites.count # # #No-Access Sites WebSites $NoaccessSies_WebSites= Get-Content -Path "C:\Results_NoAccess_Websites.txt" | Measure-Object Write-Host "WebSites No-Access Sites" $NoaccessSies_WebSites.count $WebSites_NoAccessSitesCount=$NoaccessSies_WebSites.count # # #Active Sites Websites $ActiveSites_WebSites= Get-Content -Path "C:\Results_Active_Websites.txt" | Measure-Object Write-Host "WebSites Active sites" $ActiveSites_WebSites.count $WebSites_ActiveSitescount = $ActiveSites_WebSites.count # # #Read-only Sites WebSites $ReadonlySites_WebSites=Get-Content -Path "C:\Results_Readonly_Websites.txt" | Measure-Object Write-Host "WebSites Read-only Sites" $ReadonlySites_WebSites.count $WebSites_Readonlysitescount=$ReadonlySites_WebSites.count # # #No-Access Sites WebSites $NoaccessSies_WebSites= Get-Content -Path "C:\Prod\Results_NoAccess_Websites.txt" | Measure-Object Write-Host "WebSites No-Access Sites" $NoaccessSies_WebSites.count $WebSites_NoAccessSitesCount=$NoaccessSies_WebSites.count # # #WebSites # # #Active Sites WebSites ##$ActiveSites_WebSites= Get-Content -Path "C:\Results_Active_WebSites.txt" | Measure-Object ##Write-Host "WebSites Active sites" $ActiveSites_WebSites.count ##$WebSites_ActiveSitescount = $ActiveSites_WebSites.count # # #Read-only Sites WebSites ##$ReadonlySites_WebSites=Get-Content -Path "C:\Results_Readonly_WebSites.txt" | Measure-Object ##Write-Host "WebSites Read-only Sites" $ReadonlySites_WebSites.count ##$WebSites_Readonlysitescount=$ReadonlySites_WebSites.count # # #No-Access Sites WebSites ##$NoaccessSies_WebSites= Get-Content -Path "C:\Results_NoAccess_WebSites" | Measure-Object ##Write-Host "WebSites No-Access Sites" $NoaccessSies_WebSites.count ##$WebSites_NoAccessSitesCount=$NoaccessSies_WebSites.count # # #WebSites # # #Active Sites WebSites ##$ActiveSites_WebSites= Get-Content -Path "C:\Results_Active_WebSites.txt" | Measure-Object ##Write-Host "WebSites Active sites" $ActiveSites_WebSites.count ##$WebSites_ActiveSitescount = $ActiveSites_WebSites.count # # #Read-only Sites WebSites ##$ReadonlySites_WebSites=Get-Content -Path "C:\Results_Readonly_WebSites.txt" | Measure-Object ##Write-Host "WebSites Web Read-only Sites" $ReadonlySites_WebSites.count ##$WebSites_Readonlysitescount=$ReadonlySites_WebSites.count # # #No-Access Sites WebSites ##$NoaccessSies_WebSites= Get-Content -Path "C:\Results_NoAccess_WebSites.txt" | Measure-Object ##Write-Host "WebSites Web No-Access Sites" $NoaccessSies_WebSites.count ##$WebSites_NoAccessSitesCount=$NoaccessSies_WebSites.count # # #Websites # # #Active Sites Websites ##$ActiveSites_Websites= Get-Content -Path "C:\Results_Active_WebSites.txt" | Measure-Object ##Write-Host "Websites Active sites" $ActiveSites_Websites.count ##$Websites_ActiveSitescount = $ActiveSites_Websites.count # # #Read-only Sites Websites ##$ReadonlySites_Websites=Get-Content -Path "C:\Results_Readonly_WebSites.txt" | Measure-Object ##Write-Host "Websites Read-only Sites" $ReadonlySites_Websites.count ##$Websites_Readonlysitescount=$ReadonlySites_Websites.count # # #No-Access Sites Websites ##$NoaccessSies_Websites= Get-Content -Path "C:\Results_NoAccess_WebSites.txt" | Measure-Object ##Write-Host "Websites No-Access Sites" $NoaccessSies_Websites.count ##$Websites_NoAccessSitesCount=$NoaccessSies_Websites.count # # #Websites # # #Active Sites Websites ##$ActiveSites_Websites= Get-Content -Path "C:\Results_Active_WebSites.txt" | Measure-Object ##Write-Host "Websites Active sites" $ActiveSites_Websites.count ##$Websites_ActiveSitescount = $ActiveSites_Websites.count # # #Read-only Sites Websites ##$ReadonlySites_Websites=Get-Content -Path "C:\Results_Readonly_WebSites.txt" | Measure-Object ##Write-Host "Websites Read-only Sites" $ReadonlySites_Websites.count ##$Websites_Readonlysitescount= $ReadonlySites_Websites.count # # #No-Access Sites Websites ##$NoaccessSies_Websites= Get-Content -Path "C:\Results_NoAccess_WebSites.txt" | Measure-Object ##Write-Host "Websites No-Access Sites" $$NoaccessSies_Websites.count ##$Websites_NoAccessSitesCount=$NoaccessSies_Websites.count # # #Websites # # #Active Sites Websites ##$ActiveSites_Websites= Get-Content -Path "C:\Results_Active_WebSites.txt" | Measure-Object ##Write-Host "Websites Active sites" $ActiveSites_Websites.count ##$Websites_ActiveSitescount = $ActiveSites_Websites.count # # #Read-only Sites Websites ##$ReadonlySites_Websites=Get-Content -Path "C:\Results_Readonly_WebSites.txt" | Measure-Object ##Write-Host "Websites Read-only Sites" $ReadonlySites_Websites.count ##$Websites_Readonlysitescount=$ReadonlySites_Websites.count # # #No-Access Sites Websites ##$NoaccessSies_Websites= Get-Content -Path "C:\Results_NoAccess_WebSites.txt" | Measure-Object ##Write-Host "Websites No-Access Sites" $NoaccessSies_Websites.count ##$Websites_NoAccessSitesCount=$NoaccessSies_Websites.count # #WebSites # # #Active Sites Websites ##$ActiveSites_Websites= Get-Content -Path "C:\Results_Active_WebSites.txt" | Measure-Object ##Write-Host "Websites Active sites" $ActiveSites_Websites.count ##$Websites_ActiveSitescount = $ActiveSites_Websites.count # # #Read-only Sites Websites ##$ReadonlySites_Websites= Get-Content -Path "C:\Results_Readonly_WebSites.txt" | Measure-Object ##Write-Host "Websites Read-only Sites" $ReadonlySites_Websites.count ##$Websites_Readonlysitescount=$ReadonlySites_Websites.count # # #No-Access Sites Websites ##$NoaccessSies_Websites= Get-Content -Path "C:\Results_NoAccess_WebSites.txt" | Measure-Object ##Write-Host "Websites No-Access Sites" $NoaccessSies_Websites.count ##$Websites_NoAccessSitesCount=$NoaccessSies_Websites.count # #WebSites # # #Active Sites Websites ##$ActiveSites_Websites= Get-Content -Path "C:\Results_Active_WebSites.txt" | Measure-Object ##Write-Host "Websites Active sites" $ActiveSites_Websites.count ##$Websites_ActiveSitescount = $ActiveSites_Websites.count # # #Read-only Sites Websites ##$ReadonlySites_Websites= Get-Content -Path "C:\Results_Readonly_WebSites.txt" | Measure-Object ##Write-Host "Websites Read-only Sites" $ReadonlySites_Websites.count ##$Websites_Readonlysitescount=$ReadonlySites_Websites.count # # #No-Access Sites Websites ##$NoaccessSies_Websites= Get-Content -Path "C:\Results_NoAccess_WebSites.txt" | Measure-Object ##Write-Host "Websites No-Access Sites" $NoaccessSies_Websites.count ##$Websites_NoAccessSitesCount=$NoaccessSies_Websites.count # #WebSites # # #Active Sites Websites ##$ActiveSites_Websites= Get-Content -Path "C:\Results_Active_WebSites.txt" | Measure-Object ## Write-Host "Websites Active sites" $ActiveSites_Websites.count ##$Websites_ActiveSitescount = $ActiveSites_Websites.count # # #Read-only Sites Websites ## $ReadonlySites_Websites= Get-Content -Path "C:\Results_Readonly_WebSites.txt" | Measure-Object ##Write-Host "Websites Read-only Sites" $ReadonlySites_Websites.count ##$Websites_Readonlysitescount=$ReadonlySites_Websites.count # # #No-Access Sites Websites ##$NoaccessSies_Websites= Get-Content -Path "C:\Results_NoAccess_WebSites.txt" | Measure-Object ##Write-Host "Websites No-Access Sites" $NoaccessSies_Websites.count ##$Websites_NoAccessSitesCount=$NoaccessSies_Websites.count $TotalActiveSite = ($Websites_ActiveSitescount + $WebSites_ActiveSitescount + $WebSites_ActiveSitescount + $WebSites_ActiveSitescount + $WebSites_ActiveSitescount + $WebSites_ActiveSitescount + $Websites_ActiveSitescount + $CTLQwest_ActiveSitescount + $RecordsCenter_ActiveSitescount + $Websites_ActiveSitescount + $Websites_ActiveSitescount + $Websites_ActiveSitescount + $Websites_ActiveSitescount + $Websites_ActiveSitescount) $TotalReadonlySites = ($Websites_Readonlysitescount + $WebSites_ReadonlySitesCount + $WebSites_Readonlysitescount + $WebSites_Readonlysitescount + $WebSites_Readonlysitescount + $WebSites_Readonlysitescount + $Websites_Readonlysitescount + $Websites_Readonlysitescount + $Websites_Readonlysitescount + $Websites_Readonlysitescount + $Websites_Readonlysitescount + $Websites_Readonlysitescount) $TotalNoAccessSite = ($Websites_NoAccessSitesCount + $WebSites_NoAccessSitesCount + $WebSites_NoAccessSitesCount + $WebSites_NoAccessSitesCount + $WebSites_NoAccessSitesCount + $WebSites_NoAccessSitesCount + $Websites_NoAccessSitesCount + $Websites_NoAccessSitesCount + $Websites_NoAccessSitesCount + $Websites_NoAccessSitesCount + $Websites_NoAccessSitesCount + $Websites_NoAccessSitesCount) #Total Sites $TotalWebSites = ($WebSites_ActiveSitescount + $WebSites_Readonlysitescount + $WebSites_NoAccessSitesCount) $TotalWebSites = ($WebSites_ActiveSitescount + $WebSites_ReadonlySitesCount + $WebSites_NoAccessSitesCount) $TotalWebSites = ($WebSites_ActiveSitescount + $WebSites_Readonlysitescount + $WebSites_NoAccessSitesCount) $TotalWebSites = ($WebSites_ActiveSitescount + $WebSites_Readonlysitescount + $WebSites_NoAccessSitesCount) $TotalWebSites = ($WebSites_ActiveSitescount + $WebSites_Readonlysitescount + $WebSites_NoAccessSitesCount) $TotalWebSites = ($WebSites_ActiveSitescount + $WebSites_Readonlysitescount + $WebSites_NoAccessSitesCount) $TotalWebSites = ($Websites_ActiveSitescount + $Websites_Readonlysitescount + $Websites_NoAccessSitesCount) $TotalWebSites = ($Websites_ActiveSitescount + $Websites_Readonlysitescount + $Websites_NoAccessSitesCount) $TotalWebSites =($Websites_ActiveSitescount + $Websites_Readonlysitescount + $Websites_NoAccessSitesCount) $TotalWebSites = ($Websites_ActiveSitescount + $Websites_Readonlysitescount + $Websites_NoAccessSitesCount) $TotalWebSites = ($Websites_ActiveSitescount + $Websites_Readonlysitescount + $Websites_NoAccessSitesCount) $TotalWebSites = ($Websites_ActiveSitescount + $Websites_Readonlysitescount + $Websites_NoAccessSitesCount) #====== All Sites Count $TotalSites =($TotalWebSites + $TotalWebSites + $TotalWebSites + $TotalWebSites + $TotalWebSites + $TotalWebSites + $TotalWebSites + $TotalWebSites + $TotalWebSites + $TotalWebSites + $TotalWebSites + $TotalWebSites) #Sending Email #================ #[string[]]$recipients = "" $recipients11 = @("") #[string[]]$recipients = "" # "" $smtp = "smtp" #$to = $recipients11 $from = "" #$from = "" $subject = "SharePoint Sites Current Status" $body = " <b> <font color=Navy> Date -$todaydate </b> </font> <br>" #$attachment11="C:\Results_Active_Web.txt","C:\Results_Active_Web.txt" #$body = " <b><font color=red> SP-Apps Read-only Sites Count - $Readonlysitecount </b></font> <br>" #$body += " <b><font color=red> SP-Apps Active Sites Count - $ActiveSitescount </b></font> <br>" #$body += " <b><font color=red> SP-Apps No-Access Sites Count - $NoAccessSiteCount </b></font> <br>" #$body += "Click <a href=http://www.google.com>here</a> to open google <br>" #### Now send the email using \> Send-MailMessage #========= $report = "<html> <style> {font-family: Arial; font-size: 15pt;color: #F70707; } {color:#F70707;} TABLE{border: 1px solid black; border-collapse: collapse; font-size:15pt;} #TH{border: 1px solid black; background: #F4D03F; padding: 5px; color: #000000;} TR{color: #2E86C1;text-align: center;background: #13B5ED; padding: 5px; color: #0F0F0F;} TR{color: #2E86C1;text-align: center;background: #13B5ED; padding: 5px; color: #0F0F0F;} TH{border: 1px solid black; background: #F4D03F; padding: 5px; color: #F70707;} TD{border: 1px solid black; padding: 5px; } H2{color: #F70707;} H1{Color: #0C0B0A;} </style> <h1> SharePoint Sites Current Status</h1> <table> <tr> <td> <b> Web Application </b> </td> <td> <b> Active Sites </b> </td> <td> <b> Read-Only Sites </b> </td> <td> <b> No-Access (Locked) Sites </b></td> <td> <b> Total Sites </b> </td> <tr> <tr> <td> <b> Web Application </b> </td> <td> $Web_ActiveSitescount </td> <td> $Web_Readonlysitescount</td> <td> $Web_NoAccessSitesCount </td> <td> <b> $TotalWebSites </b> </td> </tr> <tr> <td> <b> Web Application </b> </td> <td> $Web_ActiveSitescount </td> <td> $Web_ReadonlySitesCount</td> <td> $Web_NoAccessSitesCount </td> <td> <b> $TotalWebSites </b> </td> </tr> <tr> <td> <b> Web Application </b> </td> <td> $Web_ActiveSitescount </td> <td> $Web_Readonlysitescount </td> <td> $Web_NoAccessSitesCount </td> <td> <b> $TotalWebSites </b> </td> </tr> <tr> <td> <b> Web Application </b> </td> <td> $Web_ActiveSitescount </td> <td> $Web_Readonlysitescount </td> <td> $Web_NoAccessSitesCount </td> <td> <b> $TotalWebSites </b> </td> </tr> </tr> </table> " $report1 = "<html> <style> {font-family: Arial; font-size: 12pt;color: #0F0F0F; } {color:#F70707;} TABLE{border: 1px solid black; border-collapse: collapse; font-size:15pt;} #TH{border: 1px solid black; background: #F4D03F; padding: 5px; color: #000000;} TR{color: #F70707;text-align: center;background: #13B5ED; padding: 5px; color: #0F0F0F;} TR{color: #F70707;text-align: center;background: #13B5ED; padding: 5px; color: #0F0F0F;} TH{border: 1px solid black; background: #F4D03F; padding: 5px; color: #F70707;} TD{border: 1px solid black; padding: 5px; } H2{color: #F70707;} H1{Color: #0C0B0A;} </style> <table> <tr> <td> <b>Total Active Sites Count </b> </td> <td> <b> Total Read-Only Sites Count </b> </td> <td> <b> Total NoAccess Sites Count </b> </td> <td> <b> Total Sites </b> </td> </tr> <tr> <td> <b> $TotalActiveSite </b> </td> <td> <b> $TotalReadonlySites </b> </td> <td> <b> $TotalNoAccessSite </b> </td> <td> <b> $TotalSites </b> </td> </tr> </table> " #========== $body += " <br> $report< </br>" $body += " <br> $report1 </br>" $attachment12="C:\Results_Active_Web.txt" toadd="" #$toadd= "" #$toadd="" #send-MailMessage -SmtpServer $smtp -To $to -From $from -Subject $subject -Body $body -BodyAsHtml -Attachments $attachment11 -Priority Low #Send-MailMessage -SmtpServer "smtp" -To $toadd -From "email address removed for privacy reasons" -Subject $subject -Body $body -BodyAsHtml #Send-MailMessage -SmtpServer "smtp" -To $toadd -From "email address removed for privacy reasons" -Subject $subject -Body $body -BodyAsHtml -Attachments $attachment12 -Priority Low Send-MailMessage -SmtpServer "smtp" -To $toadd -From "email address removed for privacy reasons" -Subject $subject -Body $body -BodyAsHtml -Priority Low #Send-MailMessage -SmtpServer "smtp" -To $toadd -From "email address removed for privacy reasons" -Subject $body -24Views0likes0Comments"File not found" error (Error 53) when opening Access database
I'm getting a "File not found" (Error 53) error when trying to open an Access database (.accdb file). The error appears during the database startup process and points to a VBA subroutine declaration line: The error message mentions "The file was not found where specified" which suggests VBA is looking for a file during project compilation, but I can't identify what file it's looking for. Has anyone encountered this issue where the same Access file works with some SQL Server backends but fails to even open with others?82Views0likes2CommentsExchange 2010 to Microsoft 365 Migration – Recommended Approach and Tools
I’m looking for guidance on migrating Exchange 2010 (on-premises) to Microsoft 365 / Office 365. Is a direct migration from Exchange 2010 supported, or is an intermediate hop (such as upgrading Exchange or setting up a hybrid configuration) required? Additionally, could you please recommend any reliable tools that can help with this migration? I also have a few PST files that need to be migrated as part of the process. I’d appreciate insights on best practices, common challenges, and lessons learned from real-world migrations. Thanks in advance for your help.253Views0likes3Comments- 174Views0likes1Comment
Some Android mobile can't set up Exchange Mail box, what's problem?
Hello All, My Exchange Mail Server 2010. Our members could set up mail box for iPhone, but some android mobile can't set up. Have anyone know the problem reason (My Exchange Server TLS too low?)? How to fix it? Thank you. Br, Jen100Views0likes1CommentHow to connect SharePoint site access user details via Google Analytics data studio
Hi Experts, Good day, I would like to create new reports in Google data studio (Google Analytics), with the data source coming from SharePoint. I need to import site access user counts, including the number of views and counts. I know that we can export this data via the Microsoft 365 Compliance Center, but my client does not allow tenant access due to data privacy concerns. Could you please advise on how we can achieve this? Specifically, I need to collect SharePoint document and file access user details daily and connect this data to Google Analytics on daily basis. If you have step by step instruction details or if you have alternate way to achieve this let me know. Regards, Gokul202Views0likes2CommentsExchange 2016 CU23 breaks Outlook 2010 connection
Hello, I have an environment with an Exchange 2016 CU22, that connects to a public folders in legacy, which resides on an Exchange 2010. We have many users still using Outlook 2010 and all is working fine. Yesterday we decided, to my great regrets, to install CU23 and a nightmare began, Outlook 2010, on the first start since CU23, connects no issue, but if we close Outlook then reopen it, no more connections, it just shows disconnected and if I look deeper, I see it just keeps retrying but Exchange refuses it to connect. I looked everywhere in the CU23 documentation for changes and nowhere there is mention about Outlook versions and legacy connections being affected by it! Anything I can do to get Outlook 2010 going again? What happened on the first connection, what did Exchange tell Outlook to reconfigure? Newer Outlook works fine. All Outlooks connect with RPC because of the legacy public folders.840Views0likes1CommentSuddenly disappearing of Heading in Sharepoint
I am working on the Microsoft App on Mac (version 16.93(25011212)) using SharePoint, together with a Windows device (I’m not sure if this could be the issue). Suddenly, the chapter and subchapter numbers disappeared from the entire file, even though they were correctly displayed until a few days ago. Without no sense the only heading remaining is that I have circled48Views0likes0Comments