Empty SharePoint Recycle Bins Programmatically with PowerShell
Requirement: Empty recycle bin in SharePoint
In a Database attachment method migration project, we decided to clear all the recycle bins to get some additional free space in databases. There were 3000+ site collections. Automation?
SharePoint Automation = PowerShell :-)
Empty SharePoint Site Collection Recycle bin using PowerShell:
Here is the PowerShell script to empty SharePoint recycle bin.
PowerShell Script to Empty SharePoint Recycle Bins Programmatically:
Lets empty the recycle bin of all site collection under a given web application. Here is the PowerShell to delete all items in recycle bin.
In a Database attachment method migration project, we decided to clear all the recycle bins to get some additional free space in databases. There were 3000+ site collections. Automation?
SharePoint Automation = PowerShell :-)
Empty SharePoint Site Collection Recycle bin using PowerShell:
Here is the PowerShell script to empty SharePoint recycle bin.
#Get the Site Collection $Site = Get-SPSite "https://portal.crescent.com/sites/test" #Delete all from 1st Stage Recycle bin $Site.AllWebs | Foreach-object { $_.RecycleBin.MoveAllToSecondStage() } #Empty 2nd Stage Recycle bin $Site.RecycleBin.DeleteAll();This deletes all items from recycle bin in SharePoint 2013 using PowerShell.
PowerShell Script to Empty SharePoint Recycle Bins Programmatically:
Lets empty the recycle bin of all site collection under a given web application. Here is the PowerShell to delete all items in recycle bin.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue $WebApp=Get-SPWebApplication "http://intranet.crescent.com" foreach ($SPSite in $webApp.Sites) { #get the collection of webs foreach($SPWeb in $SPSite.AllWebs) { #Empty the 1st Stage Recycle bin items PERMENANTLY #$SPWeb.RecycleBin.DeleteAll(); #Send the 1st Stage Recycle bin items to 2nd Stage $SPWeb.RecycleBin.MoveAllToSecondStage(); write-host "End-User Recycle Bin Items Deleted for:" write-host $SPWeb.title ":" $SPWeb.URL "`n" #Dispose Web object $SPWeb.Dispose() } #Empty SharePoint site collection recycle bin (Second Stage Recycle bin) or Admin Recycle bin $SPSite.RecycleBin.DeleteAll(); #Dispose Site object $SPSite.Dispose() write-host "Administrator Recycle bin Items Deleted for:" $SPSite.RootWeb.title "`n" }Above code is fairly simple, and can be rewritten in C# also.
Empty SharePoint Recycle Bins Programmatically with PowerShell
Reviewed by Salaudeen Rajack
on
August 30, 2012
Rating:

How do you run this Powershell in Sharepoint 2007?
ReplyDeleteRefer this article for PowerShell in SharePoint 2007: How to use PowerShell in SharePoint 2007
DeleteNice script, thanks for sharing.
ReplyDeleteBut I have to note that it leaks memory as it does not dispose the SPSite and SPWeb objects. Details can be found here: https://msdn.microsoft.com/de-de/library/aa973248(v=office.12).aspx
Script updated! Thanks!!
DeleteCan this be modified to run on a single site collection and not the entire Web App?
ReplyDeleteScript updated Matthew!
DeleteHi Salaudeen,
ReplyDeleteCan we delete files from recycle bin if deleted by certain user?
Yes! You can filter Deleted items by particular user. Here is how: How to Search Recycle bin in SharePoint
DeleteSalaudeen,
ReplyDeleteThank you for the reference. I cannot get it to work, it throws error displaying "You cannot call a method on a null-valued expression". Can you post the one that filters by user who deleted and then delete from all places?
Found it:
ReplyDeleteAdd-PSSnapin "Microsoft.SharePoint.PowerShell"
#enter deleted by name as it is not james.bond or with domain included or else you will have to use -like
$recyclebinitems = (Get-SPSite “http://sitecollection.com”).RecycleBin | where {$_.DeletedByName -match "james bond"}
foreach ($file in $recyclebinitems) {
Write-Output "Deleting file $($file.Title)..."
(Get-SPSite “http://sitecollection.com”).RecycleBin.Delete($file.ID)
start-sleep -s 1
}