You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Graph Explorer和Azure CLI获取已删邮件ID并解决执行报错

错误原因说明

你遇到的Invoke-WebRequest错误,是因为PowerShell里的curl是Invoke-WebRequest的别名,和Linux系统原生curl的语法不兼容,导致参数传参逻辑出错。


一、修复脚本的两种方案

1. 用PowerShell原生命令替代curl

直接改用Invoke-RestMethod(PowerShell专门用于REST请求的命令),完整脚本如下:

$USER_EMAIL = "test1@test.com"
# 已登录Azure CLI可跳过此步
az login

# 获取Graph API访问令牌
$TOKEN = az account get-access-token --resource https://graph.microsoft.com --client-id $CLIENT_ID --client-secret $CLIENT_SECRET --tenant $TENANT_ID --query accessToken -o tsv

# 获取已删除邮件的ID列表
$deletedEmails = Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/users/$USER_EMAIL/mailFolders/deletedItems/messages" -Headers @{Authorization = "Bearer $TOKEN"}
$deletedEmailIds = $deletedEmails.value.id

# 批量永久删除已删除邮件
foreach ($id in $deletedEmailIds) {
    Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/users/$USER_EMAIL/mailFolders/deletedItems/messages/$id" -Method Delete -Headers @{Authorization = "Bearer $TOKEN"}
    Write-Host "已永久删除邮件ID: $id"
}

2. 调用原生curl程序

如果你的环境安装了独立curl(比如Git Bash自带的curl),可以指定curl的完整路径执行,示例:

$deletedEmailIds = & "C:\Program Files\Git\mingw64\bin\curl.exe" -s -X GET "https://graph.microsoft.com/v1.0/users/$USER_EMAIL/mailFolders/deletedItems/messages" -H "Authorization: Bearer $TOKEN" | jq -r '.value[].id'

注意替换为你实际的curl安装路径,同时确保jq工具已安装。


二、Azure中直接实现的方式

1. Azure Automation Runbook

创建PowerShell类型的Runbook,将上述脚本导入,配置拥有Mail.ReadWrite权限的Azure AD服务主体,设置定时触发规则,即可自动批量永久删除指定用户的已删邮件。

2. Logic Apps

通过可视化配置实现:

  • 添加「Microsoft Graph - 获取邮件」动作,指定邮件文件夹为deletedItems
  • 添加「Microsoft Graph - 删除邮件」动作,关联上一步获取的邮件ID
  • 设置触发条件(比如定时触发),无需编写大量代码即可完成批量删除操作

内容的提问来源于stack exchange,提问作者Natalie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 16:50:17