powershell - Microsoft GraphAPI PowerShell 下载附件
问题描述
如何从 Microsoft Graph API for Mail 消息下载附件?
'$attachment=Get-MgUserMessageAttachment -MessageId AAMkAGIzZWEyN2MxLWJmNTktNDBkMi05ZWY2LWE3YjFhYWJjNmEwOABGAAAAAAA2OVriHzx8TL2ku-KbIgYgBwChRsRs-pG2QpRCaG5OA-T0FcAAA= -UserId abcd@gmail.com
$attachment
ContentType : application/octet-stream
Id : AAMkAGIzZWEyN2MxLWJmNTktNDBkMi05ZWY2LWE3YjFhYWJjNmEwOABGAAAAAAA2OVriHzx8TL2ku-KbIgYgBwChRsRs-pG2QpRCaG5OgRLxAAAAAAEMAAChRsRs-pG2QpRCaG5OgRLxAAA-T0FcAAABEg
AQANUHCnnWvO5Dr-D2VilhKP8=
IsInline : False
LastModifiedDateTime : 4/14/2020 7:21:32 PM
Name : report.csv
Size : 707'
解决方案
Microsoft 图形 API 基于 Web API。因此,如果要下载附件,可以直接使用 HTTP GET命令和Microsoft Graph API Get Attachment API。
在 PowerShell 中,如果您想在本地使用 HTTP 调用,可以使用Invoke-WebRequest(有关更多详细信息,您可以查看如何在 PowerShell 中使用 HTTP GET?)。
但是 Microsoft 提供了一些工具(模块)来使 Microsoft Graph API 在 PowerShell 中易于使用。也就是说Microsoft.Graph模块。该模块处于预览阶段,但非常有用。
如果您想使用此模块并下载附件,可以使用以下命令:
Get-MgUserMessageAttachment -MessageId <String> -UserId <String> [-Count] [-Expand <String[]>]
[-Filter <String>] [-Orderby <String[]>] [-Search <String>] [-Select <String[]>] [-Skip <Int32>]
[-Top <Int32>] [<CommonParameters>]
有关此命令的详细信息,您可以查看Microsoft Graph SDK PowerShell文档。
Get-MgUserMessageAttachment
返回IMicrosoftGraphAttachment
具有如下一些属性(JSON 表示):
{
"contentType": "string",
"id": "string (identifier)",
"isInline": true,
"lastModifiedDateTime": "String (timestamp)",
"name": "string",
"size": 1024
}
但是这种类型是基于类型的fileAttachment
,具有如下一些属性(JSON 表示):
{
"contentBytes": "string (binary)",
"contentId": "string",
"contentLocation": "string",
"contentType": "string",
"id": "string (identifier)",
"isInline": true,
"lastModifiedDateTime": "String (timestamp)",
"name": "string",
"size": 1024
}
对于文件下载,您可以使用该ContentBytes
属性。此属性是Base64编码的,因此您必须对其进行解码,然后使用一些命令(例如Out-File )保存到文件中。
正如您在PowerShell Module的 GitHub 存储库中看到的,在此 PowerShell 的当前状态下,您无法直接使用它与此 SDK 一起下载附件,您必须直接在 PowerShell 中使用 Web API 来下载附件。
推荐阅读
- python - 在 requests-html 渲染后执行 Javascrpt
- php - 函数错误的参数太少(更新数据) CodeIgniter
- java - Java 8 Streams - 按对象的属性过滤
- mysql - mySQL、Excel、VBA 和 ADODB(命令)参数问题
- javascript - 如何在 CSS 中使用剪辑路径裁剪和保存 div 下的图像?
- php - Please assist me in resolving an Undefined offset: 0 in /public_html/wp-content/themes/modus-child/functions.php on line 51
- mongodb - 我无法连接到 MongoDB Atlas
- reactjs - Next.js 以独立方式静态导出 404 页面
- google-streetview-publish - 如何确定新创建的照片何时可以更新?
- reactjs - 在digitalocean droplet axios请求上反应应用程序在其他机器上不起作用