首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Powershell在ExchangeOnline中获取邮件(和附件)的大小

如何使用Powershell在ExchangeOnline中获取邮件(和附件)的大小
EN

Stack Overflow用户
提问于 2022-11-17 02:48:18
回答 1查看 34关注 0票数 0

更广泛的上下文是,我正在尝试编写一些powershell代码,以提取CSV表单中Office 365邮箱内容的列表,包括每个项目的大小,以帮助我随后对邮箱中存储的消费位置进行一些分析。我可以看到这个功能将如何引导其他有用的工具。

我通过Aleksandr Reznik EXchangeOnline2CSV发现了这个示例/POC代码,这给我提供了很多方法。但是,我无法成功地扩展它来提取邮件大小(以字节为单位)。

我使用graph.microsoft.com API发现了类似的问题。。由此,我推断(可能是错误的)我使用的powershell模块(Microsoft.Graph.Mail)是从同一个源获取它的数据,消息大小是邮件对象的“单个值扩展属性”。

Powershell MS Graph有点稀疏,但是它们有一个cmdlet,它似乎是与此数据Get-MgUserMessageSingleValueExtendedProperty接口的合适人选

我还在Exch-Rest源代码中找到了类似的代码,看起来它正在做我需要的事情(在某种程度上,我承认我并不完全理解),但这给了我希望,我想要做的事情实际上是可能的。这段代码包含一个调用,使用"0x0E08“上面的同一个Propety提取"MessageSize”,获取-EXRKnownPropsGet-EXRTaggedProperty似乎没有做什么特别的事情来解压它(尽管我没有完全理解它)。

然而,我试图让Get-MgUserMessageSingleValueExtendedProperty返回任何东西的尝试都是徒劳的。

我觉得这要么是一个“它还没有实现”的问题,要么是“你缺少了一个分号”类型的问题,但此时我的google-fu让我失望了,我找不到我想要做的事情的例子,所以我会感激任何帮助。

Powershell - 5.1.19041.1682 Microsoft.Graph - 1.16.0

下面是我用来连接和测试Get-MgUserMessageSingleValueExtendedProperty cmdlet的一些被屠杀的代码,包括在内联注释中它返回的错误。

(UPN显然发生了变化,但这对我是有效的,并返回主题的合理值)

`

代码语言:javascript
复制
$UPN ="user@domain.com"

Connect-MgGraph -Scopes "Mail.Read"
$folders = Get-MgUserMailFolder -UserId $UPN -All
write-host "Current folders:"
$folders.DisplayName
$folder = $folders | Where-Object { $_.DisplayName -eq "Inbox" }

$mails = Get-MgUserMailFolderMessage -All -UserId $UPN  -MailFolderId $folder.Id -Top 1
Write-Host "No. Of Emails: $($mails.count)"

foreach($currEmail in $mails){
    Write-Host "Subject: $($currEmail.Subject)"     
    
    # PidTagMessageSize = 0x0E08
    # Can't get the right form for the following....
    
    $mailSizeInBytes = Get-MgUserMessageSingleValueExtendedProperty -InputObject $currEmail -Property "0x0E08"
    # Errors as Get-MgUserMessageSingleValueExtendedProperty : The pipeline has been stopped.
  
    $mailSizeInBytes = Get-MgUserMessageSingleValueExtendedProperty  -MessageId $currEmail.Id -UserId $UPN -Property "0x0E08"
    # Errors as Get-MgUserMessageSingleValueExtendedProperty : Parsing OData Select and Expand failed: An identifier was expected at position 0.
    
    $mailSizeInBytes = Get-MgUserMessageSingleValueExtendedProperty  -MessageId $currEmail.Id -UserId $UPN -Property "LONG 0x0E08"
    # Errors as Get-MgUserMessageSingleValueExtendedProperty : Parsing OData Select and Expand failed: Term 'LONG 0x0E08' is not valid in a $select or $expand expression.

    Write-Host "Mail Size: $($mailSizeInBytes)"
}

`

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-17 23:25:44

您可以在中使用-expandproperty,这将等同于图形请求中的$expand

代码语言:javascript
复制
$mails = Get-MgUserMailFolderMessage -All -UserId user@domain  -MailFolderId Inbox -Top 1 -ExpandProperty "singleValueExtendedProperties(`$filter=id eq 'long 0x0E08')"

然后

代码语言:javascript
复制
$mails.SingleValueExtendedProperties[0]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74469576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档