Skip to main content

Powershell Script to get Report Group-enabled SharePoint sites Get all sites with the Office 365 Group template

<#
.NOTES 
    ========================================================================================================================================= 
 Author: Kamal Pandey       
 DESCRIPTION : Report Group-enabled SharePoint sites Get all sites with the Office 365 Group template 
#>
$siteUrl = Read-Host  "Enter SharePoint Admin Center Url"
try
{
    Set-ExecutionPolicy RemoteSigned
    $Cred = Get-Credential
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $Cred -Authentication Basic -AllowRedirection
    Import-Module (Import-PSSession $Session -Allowclobber) -Global
     Connect-MsolService -Credential $Cred
    Connect-SPOService -Url $siteUrl -credential $Cred
}
catch
{
    write-host "Failed to connect to SharePoint online site at " $siteUrl -ForegroundColor Red
    write-host $_ -ForegroundColor Red
    return;
}

# ===Start Script =========================================================== 

Write-Host "Analyzing SharePoint sites created with the Office 365 Groups template..."
$Sites = Get-SPOSite -Template "GROUP#0" -IncludePersonalSite:$False -Limit All
$Report = [System.Collections.Generic.List[Object]]::new()
$ErrorSites = 0
$i = 0

Foreach ($Site in $Sites) {
   $i++ 
   $ProgressBar = "Processing site " + $Site.Title + " (" + $i + " of " + $Sites.Count + ")"

   Write-Progress -Activity "Checking SharePoint Sites" -Status $ProgressBar -PercentComplete ($i/$Sites.Count*100)
      
   $GroupId = (Get-SpoSite $Site.Url -Detailed).GroupId.Guid
   #$Owner = $_.owner
   # User this code  if above code dont support. 
   #$GroupId = (Get-UnifiedGroup | Where-Object {$_.SharePointSiteUrl -eq $Site.url}).ExternalDirectoryObjectId

   # Check if the Office 365 Group exists
   $ErrorText = $Null
   $O365Group = $Null
   $O365Group = (Get-UnifiedGroup -Identity $GroupId -ErrorAction SilentlyContinue)
   
   If ($O365Group -eq $Null) {
       $O365GroupName = "Unknown Office 365 Group"
       $ErrorText = "Failed to find Office 365 Group for site " + $Site.Title + " identifier " + $GroupId
       $O365GroupMembers = 0
       $ErrorSites++ }
   Else {
       $O365GroupName = $O365Group.DisplayName
       $O365GroupMembers = $O365Group.GroupMemberCount
       $O365GroupType = $O365Group.GroupType       
       Try {Get-Team -GroupId $GroupId | Out-Null}
       Catch {$TeamsEnabled = $False} }

  # Get group owner 

     $url = $Site.URL 
     $own = (Get-SPOSite $url).Owner
     $own = $own -replace "_o", ""
     $managedby = (Get-UnifiedGroup $own).managedby 
     $Owner = $managedby  
     
   # Generate a line to print 

   $ReportLine = [PSCustomObject]@{
    #Site          = $Site.Title
    Group_Name = $O365GroupName
    Group_URL  = $Site.URL
    Group_Owner   = $Owner
    Last_Content  = $Site.LastContentModifiedDate
    Current_Usage = $Site.StorageUsageCurrent
     Error = $ErrorText}
    $Report.Add($ReportLine)
}

$currenttime = Get-Date -Format g
Write-Host "All done" $ErrorSites "O365Group sites report has been generated- Finish Time:" $currenttime
# Export to csv
$Report | Sort Site | Export-CSV c:\Reports\GroupSiteInformation.csv -NoTypeInformation

Comments

Popular posts from this blog

Build and Deploy a custom theme in SharePoint 2019: Using C# and Site features

Custom Theme and Branding are common to use cases and all kinds of business users like to have the personalized team and collaboration sites. today I am posting C# code that will help to build custom features for SharePoint 2019 site.   If need any assistance, I would be happy to help: kamal_pandey@outlook.com  ----------------------------- Code to build  custom features---------- using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.SharePoint; using Microsoft.SharePoint.Utilities; namespace SharePointBranding.Code {     public class BrandingManager     {         public SPWeb Web { get; set; }         public BrandingManager(SPWeb web)         {             Web = web;         }         public void SetMasterPage(stri...

PowerShell For create Sub site in office 365

#Add references to SharePoint client assemblies and authenticate to Office 365 site Add-Type -Path "\Software\SharePoint 2013 Client Browser v1.7\Microsoft.SharePoint.Client.dll" Add-Type -Path "\Software\SharePoint 2013 Client Browser v1.7\Microsoft.SharePoint.Client.Runtime.dll" $Username = Read-Host -Prompt "Please enter your username" $Password = Read-Host -Prompt "Please enter your password" -AsSecureString $Site = "https://XXXXXXX.sharepoint.com/sites/Test2/" $Context = New-Object Microsoft.SharePoint.Client.ClientContext($Site) $Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username,$Password) $Context.Credentials = $Creds $csvLocation = "C:\Users\PS_SiteCollectionsToCreate.csv" $csv = Import-Csv $csvLocation #List Custom Templates $Templates = $Context.Site.GetWebTemplates("1033","0") $Context.Load($Templates) $Context.ExecuteQuery() $Templates | Whe...