Provision

Delete all Microsoft 365 groups and SharePoint sites

Sample shows how you can delete Microsoft 365 Groups and associated SharePoint Online sites in your development environment

Summary

This script sample shows how you can delete Microsoft 365 Groups and associated SharePoint Online sites in your development environment.

powershell
$AdminCenterURL="https://contoso-admin.sharepoint.com/"

#Connect to SharePoint admin URL using PnPOnline to use PnP cmdlets to delete M365 groups and SharePoint sites
Connect-PnPOnline -Url $AdminCenterURL -Interactive

#Retrieve all M365 group connected (template "GROUP#0" sites to be deleted) sites beginning with https://contoso.sharepoint.com/sites/D-Test
$sites = Get-PnPTenantSite -Filter {Url -like https://contoso.sharepoint.com/sites/D-Test} -Template 'GROUP#0'

#Displaying the sites returned to be deleted
$sites | Format-Table  Url, Template, GroupId

Read-Host -Prompt "Press Enter to start deleting m365 groups and sites (CTRL + C to exit)"

$sites | ForEach-Object {
    #Delete M365 group
    Remove-PnPMicrosoft365Group -Identity $_.GroupId

    #Allow time for M365 group to be deleted
    Start-Sleep -Seconds 60

    #Delete the SharePoint site after the M365 group is deleted
    Remove-PnPTenantSite -Url $_.Url -Force -SkipRecycleBin

    #Permanently remove the M365 group
    Remove-PnPDeletedMicrosoft365Group -Identity $_.GroupId

    #Permanently delete the site and to allow a site to be created with the same URL of the site just deleted, i.e. to avoid message "This site address is available with modification"
    Remove-PnPTenantDeletedSite -Identity $_.Url -Force
}

# Disconnect SharePoint online connection
Disconnect-PnPOnline

Contributors

Author(s)
Reshmee Auckloo
Ganesh Sanap

Disclaimer

THESE SAMPLES ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.

Tool documentation & references

Keep exploring