使用Powershell v2.0通过Google API删除Gmail电子邮件

时间:2016-12-20 07:30:25

标签: powershell google-api gmail google-oauth powershell-v2.0

$user = "example@gmail.com"
$pass= "examplepassword" 
$secpasswd = ConvertTo-SecureString $user -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($pass, $secpasswd)

Invoke-RestMethod  'https://www.googleapis.com/gmail/v1/users/me/messages/0' -Method Delete -Credentials $cred

所以,我的问题是双重的。

我最初尝试使用Invoke-WebRequest通过Google API删除带有http删除请求的Gmail电子邮件。但是,这不起作用,因为Powershell 2.0 does not support Invoke-WebRequest

此后,我转向尝试在使用IMAP和POP3进行实验后使用Invoke-RestMethod,这两者都需要外部依赖性(向我正在使用的计算机添加.dll不是最佳的)。

因此,如果有人可以通过Powershell中的Google API向我显示删除电子邮件的正确方法,我将不胜感激。我提供了一些示例代码,说明我正在使用上面的内容。请原谅它可能包含的任何错误,因为我对Powershell相对较新,而且我在使用RESTful服务方面的经验仍然有限。

1 个答案:

答案 0 :(得分:2)

GMail API将需要Oauth2身份验证,除非这是一个gsuit / domain admin / GMail帐户,在这种情况下,您可以使用服务帐户进行身份验证。无论哪种情况,您都无法使用登录名和密码。

如果您考虑通过邮件服务器IMAP and SMTP直接执行此操作而不使用API​​,那么我的powershell知识非常有限。不知道PowerShell是否有可能

更新

我能够使用Invoke-WebRequest来完成它,你仍然需要先获得一个访问令牌。

Invoke-WebRequest -Uri "https://www.googleapis.com/gmail/v1/users/me/messages/0?access_token=$accesstoken"-Method Get | ConvertFrom-Json

接缝也可以工作

Invoke-RestMethod -Uri "https://www.googleapis.com/gmail/v1/users/me/messages/0?access_token=$accesstoken"-Method Get 

如果您感兴趣的话,请在GitHub上填写OAuth代码:Google Oauth Powershell