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

Deleting Gmail Emails via Google API using 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 通过带有 http 删除请求的 Google API 删除 gmail 电子邮件。但是,这没有用,因为 Powershell 2.0 does not support Invoke-WebRequest

此后,在对 IMAP 和 POP3 进行实验后,我转而尝试使用 Invoke-RestMethod,这两者都需要外部依赖项(将 .dll 添加到我正在使用的机器并不是最佳选择)。

因此,如果有人能告诉我通过 Powershell 中的 Google API 删除电子邮件的适当方法,我将不胜感激。我已经提供了一些关于我在上面使用的示例代码。请原谅它可能包含的任何错误,因为我对 Powershell 比较陌生,而且我在使用 RESTful 服务方面的经验仍然有限。

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

我的 powershell 知识非常有限,您是否考虑过直接通过邮件服务器 IMAP and SMTP 而不是使用 API 来执行此操作?不知道 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