functions/SPClientAttachment/Remove-SPClientAttachment.ps1
#Requires -Version 3.0 <# Remove-SPClientAttachment.ps1 Copyright (c) 2017 karamem0 This software is released under the MIT License. https://github.com/karamem0/SPClient/blob/master/LICENSE #> function Remove-SPClientAttachment { <# .SYNOPSIS Deletes the attachment. .DESCRIPTION The Remove-SPClientAttachment function removes the attachment from the list item. .PARAMETER ClientContext Indicates the client context. If not specified, uses default context. .PARAMETER ClientObject Indicates the attachment to delete. .PARAMETER ParentObject Indicates the list item which the attachment is contained. .PARAMETER FileName Indicates the attachment file name. .EXAMPLE Remove-SPClientAttachment $attachment .EXAMPLE Remove-SPClientAttachment $item -FileName "CustomAttachment.xlsx" .INPUTS None or Microsoft.SharePoint.Client.Attachment or SPClient.SPClientAttachmentParentParameter .OUTPUTS None .LINK https://github.com/karamem0/SPClient/blob/master/doc/Remove-SPClientAttachment.md #> [CmdletBinding(DefaultParameterSetName = 'ClientObject')] param ( [Parameter(Mandatory = $false)] [Microsoft.SharePoint.Client.ClientContext] $ClientContext = $SPClient.ClientContext, [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true, ParameterSetName = 'ClientObject')] [Microsoft.SharePoint.Client.Attachment] $ClientObject, [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true, ParameterSetName = 'FileName')] [SPClient.SPClientAttachmentParentParameter] $ParentObject, [Parameter(Mandatory = $true, ParameterSetName = 'FileName')] [string] $FileName ) process { if ($ClientContext -eq $null) { throw "Cannot bind argument to parameter 'ClientContext' because it is null." } if ($PSCmdlet.ParameterSetName -eq 'ClientObject') { if (-not $ClientObject.IsPropertyAvailable('FileName')) { Invoke-ClientContextLoad ` -ClientContext $ClientContext ` -ClientObject $ClientObject ` -Retrieval 'FileName' } } else { $ClientObjectCollection = $ParentObject.ClientObject.AttachmentFiles if ($PSCmdlet.ParameterSetName -eq 'FileName') { $PathMethod = New-Object Microsoft.SharePoint.Client.ObjectPathMethod( ` $ClientContext, ` $ClientObjectCollection.Path, ` 'GetByFileName', ` [object[]]$FileName) $ClientObject = New-Object Microsoft.SharePoint.Client.Attachment($ClientContext, $PathMethod) Invoke-ClientContextLoad ` -ClientContext $ClientContext ` -ClientObject $ClientObject ` -Retrieval 'FileName' trap { throw 'The specified attachment could not be found.' } } } $ClientObject.DeleteObject() $ClientContext.ExecuteQuery() } } |