Public/Item/Remove-GDriveItem.ps1
<#
.SYNOPSIS Move GoogleDrive Item to trash or remove it permanently .DESCRIPTION Move GoogleDrive Item to trash or remove it permanently .PARAMETER ID File ID to remove .PARAMETER Permanently Permanently remove item. If not set, item moved to trash .PARAMETER RevisionID File Revision ID to remove (Version history) .PARAMETER AccessToken Access Token for request .EXAMPLE # Trash item Remove-GDriveItem -AccessToken $access_token -ID '0BAjkl4cBDNVpVbB5nGhKQ195aU0' .EXAMPLE # Remove item Remove-GDriveItem -AccessToken $access_token -ID '0BAjkl4cBDNVpVbB5nGhKQ195aU0' -Permanently .OUTPUTS Json with item metadata as PSObject or None if removed permanently .NOTES Author: Max Kozlov .LINK Rename-GDriveItem Move-GDriveItem Set-GDriveItemProperty https://developers.google.com/drive/api/v3/reference/files/delete https://developers.google.com/drive/api/v3/reference/revisions/delete #> function Remove-GDriveItem { [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', DefaultParameterSetName='Trash')] param( [Parameter(Mandatory, Position=0)] [string]$ID, [Parameter(ParameterSetName='Permanent')] [switch]$Permanently, [Parameter(ParameterSetName='Permanent')] [string]$RevisionID, [Parameter(Mandatory)] [string]$AccessToken ) if ($Permanently -or $RevisionID) { $Headers = @{ "Authorization" = "Bearer $AccessToken" } $Revision = if ($RevisionID) { '/revisions/' + $RevisionID } else { '' } $Uri = '{0}{1}{2}?{3}' -f $GDriveUri, $ID, $Revision, "?supportsAllDrives=true" Write-Verbose "URI: $Uri" if ($PSCmdlet.ShouldProcess($ID, "Remove Item")) { $requestParams = @{ Uri = $Uri Headers = $Headers ContentType = "application/json; charset=utf-8" } Invoke-RestMethod @requestParams -Method Delete @GDriveProxySettings } } else { if ($PSCmdlet.ShouldProcess($ID, "Move Item to trash")) { [void]$PSBoundParameters.Remove('Permanently') Set-GDriveItemProperty @PSBoundParameters -JsonProperty '{ "trashed": "true" }' } } } |