更广泛的上下文是,我正在尝试编写一些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”,获取-EXRKnownProps和Get-EXRTaggedProperty似乎没有做什么特别的事情来解压它(尽管我没有完全理解它)。
然而,我试图让Get-MgUserMessageSingleValueExtendedProperty返回任何东西的尝试都是徒劳的。
我觉得这要么是一个“它还没有实现”的问题,要么是“你缺少了一个分号”类型的问题,但此时我的google-fu让我失望了,我找不到我想要做的事情的例子,所以我会感激任何帮助。
Powershell - 5.1.19041.1682 Microsoft.Graph - 1.16.0
下面是我用来连接和测试Get-MgUserMessageSingleValueExtendedProperty cmdlet的一些被屠杀的代码,包括在内联注释中它返回的错误。
(UPN显然发生了变化,但这对我是有效的,并返回主题的合理值)
`
$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)"
}`
发布于 2022-11-17 23:25:44
您可以在中使用-expandproperty,这将等同于图形请求中的$expand
$mails = Get-MgUserMailFolderMessage -All -UserId user@domain -MailFolderId Inbox -Top 1 -ExpandProperty "singleValueExtendedProperties(`$filter=id eq 'long 0x0E08')"然后
$mails.SingleValueExtendedProperties[0]https://stackoverflow.com/questions/74469576
复制相似问题