我创建了一个非常简单的 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 的表格,但是Attachments
属性只是打印System.__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
“展开”附件列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)