Empty the tenant recycle bin
Script that removes sites from the tenant recycle bin
Summary
Your deleted modern SharePoint sites are not going to disappear from the UI before they have been removed from the tenant recycle bin. You can either wait for three months, delete them manually via the SharePoint admin center, or run the script below.
# SharePoint online admin center site url
$adminSiteUrl = "https://contoso-admin.sharepoint.com"
# Connect to SharePoint online admin center
Connect-PnPOnline -Url $adminSiteUrl -Interactive
# Get all deleted sites from tenant recycle bin
$deletedSites = Get-PnPTenantRecycleBinItem
$deletedSites | Format-Table Url
if ($deletedSites.Count -eq 0)
{
break
}
Read-Host -Prompt "Press Enter to start deleting (CTRL + C to exit)"
$progress = 0
$total = $deletedSites.Count
foreach ($deletedSite in $deletedSites)
{
$progress++
Write-Host $progress / $total":" $deletedSite.Url
# Permanently delete site collection from the tenant recycle bin
Clear-PnPTenantRecycleBinItem -Url $deletedSite.Url -Wait -Force
}
# Disconnect SharePoint online connection
Disconnect-PnPOnline
# Get Credentials to connect
$m365Status = m365 status
if ($m365Status -match "Logged Out") {
m365 login
}
# Get all deleted sites from tenant recycle bin
$deletedSites = m365 spo tenant recyclebinitem list | ConvertFrom-Json
$deletedSites | Format-Table Url
if ($deletedSites.Count -eq 0)
{
break
}
Read-Host -Prompt "Press Enter to start deleting (CTRL + C to exit)"
$progress = 0
$total = $deletedSites.Count
foreach ($deletedSite in $deletedSites)
{
$progress++
Write-Host $progress / $total":" $deletedSite.Url
# Permanently delete site collection from the tenant recycle bin
m365 spo tenant recyclebinitem remove --siteUrl $deletedSite.Url --wait --confirm
}
# Disconnect SharePoint online connection
m365 logout
# SharePoint online admin center site url
$adminSiteUrl = "https://contoso-admin.sharepoint.com"
# Connect to SharePoint online admin center
Connect-SPOService -Url $adminSiteUrl
# Get all deleted sites from tenant recycle bin
$deletedSites = Get-SPODeletedSite
$deletedSites | Format-Table Url
if ($deletedSites.Count -eq 0)
{
break
}
Read-Host -Prompt "Press Enter to start deleting (CTRL + C to exit)"
$progress = 0
$total = $deletedSites.Count
foreach ($deletedSite in $deletedSites)
{
$progress++
Write-Host $progress / $total":" $deletedSite.Url
# Permanently delete site collection from the tenant recycle bin
Remove-SPODeletedSite -Identity $deletedSite.Url -Confirm
}
# Disconnect SharePoint online connection
Disconnect-SPOService
Source Credit
Sample first appeared on Empty the tenant recycle bin | CLI for Microsoft 365
Contributors
| Author(s) |
|---|
| Leon Armston |
| 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
- Want to learn more about PnP PowerShell and the cmdlets
Check out the PnP PowerShell site to get started and for the reference to the cmdlets.
- Want to learn more about CLI for Microsoft 365 and the commands
Check out the CLI for Microsoft 365 site to get started and for the reference to the commands.
- Introduction to the SharePoint Online Management Shell
Check out the SPO Management Shell documentation site to get started and for the reference to the cmdlets.