Public/Gmail/Remove-GSGmailMessage.ps1
function Remove-GSGmailMessage { <# .SYNOPSIS Removes a Gmail message from the user .DESCRIPTION Removes a Gmail message from the user .PARAMETER User The primary email of the user to remove the message from Defaults to the AdminEmail user .PARAMETER Id The Id of the message to remove .PARAMETER Method The method used to delete the message Available values are: * "Trash": moves the message to the TRASH label (Default - preferred method, as this is recoverable) * "Delete": permanently deletes the message (NON-RECOVERABLE!) Default value is 'Trash' .EXAMPLE Remove-GSGmailMessage -User joe -Id 161622d7b76b7e1e,1616227c34d435f2 Moves the 2 message Id's from Joe's inbox into their TRASH after confirmation #> [cmdletbinding(SupportsShouldProcess = $true,ConfirmImpact = "High")] Param ( [parameter(Mandatory = $false,ValueFromPipelineByPropertyName = $true)] [Alias("PrimaryEmail","UserKey","Mail")] [string] $User = $Script:PSGSuite.AdminEmail, [parameter(Mandatory = $true,ValueFromPipelineByPropertyName = $true)] [Alias('MessageID')] [String[]] $Id, [parameter(Mandatory = $false)] [ValidateSet('Trash','Delete')] [String] $Method = 'Trash' ) Begin { if ($MyInvocation.InvocationName -eq 'Move-GSGmailMessageToTrash') { $Method = 'Trash' } if ($User -ceq 'me') { $User = $Script:PSGSuite.AdminEmail } elseif ($User -notlike "*@*.*") { $User = "$($User)@$($Script:PSGSuite.Domain)" } $serviceParams = @{ Scope = 'https://mail.google.com' ServiceType = 'Google.Apis.Gmail.v1.GmailService' User = $User } $service = New-GoogleService @serviceParams } Process { try { foreach ($mId in $Id) { $request = switch ($Method) { Trash { $service.Users.Messages.Trash($User,$mId) $message = "moved to TRASH" } Delete { $service.Users.Messages.Delete($User,$mId) $message = "deleted" } } if ($PSCmdlet.ShouldProcess("Removing Message Id '$mId' for user '$User'")) { Write-Verbose "Removing Message Id '$mId' for user '$User'" $res = $request.Execute() if ($res) { $res | Select-Object @{N = 'User';E = {$U}},* } Write-Verbose "Message ID '$mId' successfully $message for user '$User'" } } } catch { if ($ErrorActionPreference -eq 'Stop') { $PSCmdlet.ThrowTerminatingError($_) } else { Write-Error $_ } } } } |