Download All Attachments from SharePoint List Items using PowerShell

Requirement: Download all attachments from a SharePoint list to local folder. Lets use PowerShell to download attachments from all SharePoint list items.

download attachment from sharepoint list using powershell

PowerShell to Download Attachments from SharePoint List:

#Site URL and List Name variables
$WebURL = "http://intranet.crescent.com/sites/purchase"    
$LibraryName = "Invoinces"   

#Local folder to which attachments to be downloaded
$DownloadPath = "C:\Docs"     

#Get the web
$Web = Get-SPWeb $WebURL
#Get the Library
$List = $Web.Lists[$LibraryName]    

#Loop through each List item
foreach ($ListItem in $List.Items)
{   
	#Set path to save attachment
	$DestinationFolder = $DownloadPath + "\" + $ListItem.ID          

	#Check if folder exists already. If not, create the folder
	if (!(Test-Path -path $DestinationFolder))        
	{            
		New-Item $DestinationFolder -type directory          
	}
  
	#Get all attachments
	$AttachmentsColl = $ListItem.Attachments

	#Loop through each attachment
	foreach ($Attachment in $AttachmentsColl)    
	{ 
		#Get the attachment File       
		$file = $web.GetFile($listItem.Attachments.UrlPrefix + $Attachment)        
		$bytes = $file.OpenBinary()                

		#Save the attachment as a file  
		$FilePath = $DestinationFolder + " \" + $Attachment
		$fs = new-object System.IO.FileStream($FilePath, "OpenOrCreate")
		$fs.Write($bytes, 0 , $bytes.Length)    
		$fs.Close()    
	}
}

For C# version of the above code, Go to: Download Attachments from SharePoint List Programmatically

Salaudeen Rajack

Information Technology Professional with Two decades of SharePoint Experience.

2 thoughts on “Download All Attachments from SharePoint List Items using PowerShell

  • July 30, 2019 at 2:59 PM

    where would you use a filter from a column like: ?{$_.Item(“Business Unit”) -eq “Upstream”}

    Reply

Leave a Reply