Powershell 列出共享邮箱中带有附件名称的所有电子邮件

Powershell 列出共享邮箱中带有附件名称的所有电子邮件,powershell,outlook,Powershell,Outlook,我创建了一个非常简单的powershell脚本,用于收集共享邮箱文件夹中所有电子邮件的一些基本信息 Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null $olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type] $outlook = new-object -comobject outlook.application $name

我创建了一个非常简单的powershell脚本,用于收集共享邮箱文件夹中所有电子邮件的一些基本信息

Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null
$olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type] 
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")
$Inbox = $namespace.pickfolder()
$Inbox.items | Select-Object -Property Categories, Attachments, Subject, ReceivedTime
这正按预期工作,打印一个可以导出为CSV的表,但附件属性只是打印系统。\uuu ComObject。因此,我需要用附件名$\的列表替换附件列。Attachments::DisplayName

我尝试迭代结果以解决此问题,方法如下:

$Inbox.items | Select-Object -Property Categories, Attachments, 
Subject, ReceivedTime | ForEach-Object -Process {$_.Attachments::DisplayName}
但这只打印附件信息,而不打印其余数据。此外,在{}之间添加所有字段会导致powershell每行打印一个字段,因此无法将其导出为CSV

您能帮我正确地替换“附件”列吗?

更改最后一行:

$Inbox.items |Select-Object -Property Categories,Subject,   
ReceivedTime,@{name="Attachments";expression={$_.Attachments|%{$_.DisplayName}}}
然后,您可以通过管道将其传输到| ft-wrap以展开“附件”列。

更改最后一行:

$Inbox.items |Select-Object -Property Categories,Subject,   
ReceivedTime,@{name="Attachments";expression={$_.Attachments|%{$_.DisplayName}}}

然后,您可以通过管道将其传输到| ft-wrap以展开“附件”列。

谢谢,这就是我要找的!谢谢,这就是我要找的!