SharePoint Online: Delete Attachments from List Item using Powershell
Requirement: Delete Attachment from SharePoint Online List Item.
How to Delete Attachments from List Items in SharePoint Online?
To delete an attachment from SharePoint list items, Do the following:
Let's delete all attachments from a SharePoint Online list item using PowerShell.
PowerShell to Remove Attachment from SharePoint Online List Item:
PnP PowerShell to Delete Attachment from SharePoint Online List Item:
How to Delete Attachments from List Items in SharePoint Online?
To delete an attachment from SharePoint list items, Do the following:
- Navigate to the SharePoint Online List >> Select the List Item >> Click on Edit from tool pane.
- In Edit panel, scroll down to the bottom and click on little x Icon next to any attachment to delete it from the list item.
- Click on Save to commit your changes.
Let's delete all attachments from a SharePoint Online list item using PowerShell.
#Load SharePoint CSOM Assemblies Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" #Set Parameters $SiteURL= "https://crescent.sharepoint.com" $ListName="Projects" $ItemID="4" Try { #Setup Credentials to connect $Cred = Get-Credential $Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password) #Setup the context $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Ctx.Credentials = $Cred #Get the List & List Item $List = $Ctx.Web.Lists.GetByTitle($ListName) $Ctx.Load($List) $ListItem = $List.GetItemByID($ItemID) $Ctx.Load($ListItem) $Ctx.ExecuteQuery() #Get All existing attachments $AttachmentFiles = $ListItem.AttachmentFiles $Ctx.Load($AttachmentFiles) $Ctx.ExecuteQuery() ForEach($AttachmentFile in $AttachmentFiles) { $AttachmentFile.DeleteObject() $Ctx.ExecuteQuery() write-host -f Green "Attachment File '$AttachmentFile' Removed from List Item!" } } Catch { write-host -f Red "Error Removing Attachment From List!" $_.Exception.Message }
PowerShell to Remove Attachment from SharePoint Online List Item:
#Load SharePoint CSOM Assemblies Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" Function Remove-AttachmentFromListItem() { param ( [Parameter(Mandatory=$true)] [string] $SiteURL, [Parameter(Mandatory=$true)] [string] $ListName, [Parameter(Mandatory=$true)] [string] $ItemID, [Parameter(Mandatory=$false)] [string] $AttachmentFileName ) Try { #Setup Credentials to connect $Cred = Get-Credential $Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password) #Setup the context $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Ctx.Credentials = $Cred #Get the List & List Item $List = $Ctx.Web.Lists.GetByTitle($ListName) $Ctx.Load($List) $ListItem = $List.GetItemByID($ItemID) $Ctx.Load($ListItem) $Ctx.ExecuteQuery() #Get All existing attachments $AttachmentFiles = $ListItem.AttachmentFiles $Ctx.Load($AttachmentFiles) $Ctx.ExecuteQuery() #Check if attachment file name exists $AttachmentFile = $AttachmentFiles | where { ($_.FileName -eq $AttachmentFileName) } If($AttachmentFile -ne $Null) { $AttachmentFile.DeleteObject() $Ctx.ExecuteQuery() write-host -f Green "Attachment File '$AttachmentFileName' Removed from List Item!" } else { write-host -f Yellow "Attachment File '$AttachmentFileName' Doesn't Exist!" } } Catch { write-host -f Red "Error Removing Attachment From List!" $_.Exception.Message } } #Set Parameters $SiteURL= "https://crescent.sharepoint.com" $ListName="Projects" $ItemID="64" $AttachmentFileName="ProjectProposal.docx" #Call the function to copy list items Remove-AttachmentFromListItem -SiteURL $SiteURL -ListName $ListName -ItemID $ItemID -AttachmentFileName $AttachmentFileName
PnP PowerShell to Delete Attachment from SharePoint Online List Item:
#Config Variables $SiteURL = "https://crescenttech.sharepoint.com" $ListName ="Projects" $ListItemTitle = "SharePoint 2016 Upgrade" $AttachmentFileName= "Project Proposal.docx" #Connect PNP Online Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential) #Get the Context $Context = Get-PnPContext #Get the List Item from "Title" field value $Query = "<View><Query><Where><Eq><FieldRef Name='Title'/><Value Type='Text'>$ListItemTitle</Value></Eq></Where></Query></View>" $ListItem = Get-PnPListItem -List $ListName -Query $Query -PageSize 1 #Get List attachment by its file name $Attachment = $ListItem.AttachmentFiles.GetByFileName($AttachmentFileName) #Delete the attachment $Attachment.DeleteObject() $Context.ExecuteQuery()
No comments:
Please Login and comment to get your questions answered!