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 🙂

how to empty sharepoint recycle bin using powershell

Empty SharePoint Site Collection Recycle bin using PowerShell:

The Recycle bin in SharePoint is a container used to retain deleted items such as list items, documents, document libraries, lists, and sites to a number of days defined by the SharePoint administrator. Deleted items in recycle bin can be restored if needed. 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

This deletes all items from recycle bin in SharePoint 2013 using PowerShell.

PowerShell Script to Empty SharePoint Recycle Bins Programmatically:

Let’s 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 "https://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

		#Send the 1st Stage Recycle bin items to 2nd Stage

		write-host "End-User Recycle Bin Items Deleted for:" 
		write-host $SPWeb.title ":" $SPWeb.URL "`n"

		#Dispose Web object
	#Empty SharePoint site collection recycle bin (Second Stage Recycle bin) or Admin Recycle bin

	#Dispose Site object

	write-host "Administrator Recycle bin Items Deleted for:" $SPSite.RootWeb.title "`n"

Above code is fairly simple, and can be rewritten in C# also.

Salaudeen Rajack

Salaudeen Rajack - Information Technology Expert with Two decades of hands-on experience, specializing in SharePoint, PowerShell, Microsoft 365, and related products. Passionate about sharing the deep technical knowledge and experience to help others, through the real-world articles!

12 thoughts on “Empty SharePoint Recycle Bins Programmatically with PowerShell

  • Thanks so much. Work great for me. thousand of items and take a while but completed .. save so much time ..

  • can we delete particular list from the recycle bin which has 1 gb size using powershell script. if any scripts please share in the comment section

  • Found it:

    Add-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 “https://sitecollection.com”).RecycleBin | where {$_.DeletedByName -match “james bond”}

    foreach ($file in $recyclebinitems) {

    Write-Output “Deleting file $($file.Title)…”

    (Get-SPSite “https://sitecollection.com”).RecycleBin.Delete($file.ID)

    start-sleep -s 1


  • Salaudeen,
    Thank 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?

  • Hi Salaudeen,
    Can we delete files from recycle bin if deleted by certain user?

  • Can this be modified to run on a single site collection and not the entire Web App?

  • Nice script, thanks for sharing.
    But 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

  • How do you run this Powershell in Sharepoint 2007?


Leave a Reply

Your email address will not be published. Required fields are marked *