我得到了一个每周自动发送的电子邮件附件,并与outlook规则,它被保存在我的收件箱中的一个文件夹中。我的目标是创建一个PowerShell脚本,从最新的“接收时间”的电子邮件下载附件。我已经设法排序文件夹中的对象“接收时间”,并获得列表中的最新电子邮件:“$emails[0]",我可以看到附件的名称,但我似乎找不到如何下载文件本身。我得到的错误如下:“不能对空值表达式调用方法。"
我的代码看起来像这样:
$outlook = New-Object -ComObject outlook.application
$mapi = $outlook.GetNamespace("MAPI");
#Get Folder path
$filePath = "C:\Temp\test"
$inbox = $mapi.GetDefaultFolder(6)
$inbox.Folders | Select-Object FolderPath
$olFolderPath = "\\DanielMol@sodastream.com\Inbox\compliance"
#Get Emails Items from folder
$targetFolder = $inbox.Folders | Where-Object { $_.FolderPath -eq $olFolderPath }
#Sort Emails in folder by date
$emails = $targetFolder.Items | Sort-Object ReceivedTime -Descending
#download attachements
$emails[0].Attachments | Select-Object $_.saveasfile(($filePath))
我使用本指南下载附件,但我的用例与本文中描述的用例略有不同:https://bronowski.it/blog/2020/09/saving-outlook-attachments-with-powershell/
抱歉,如果这是一个非常简单的任务,我是新的PowerShell和刚刚学习自动化。非常感谢:)
1条答案
按热度按时间2q5ifsrm1#
首先,我注意到了下面的代码:
相反,您需要使用
Items
类的Sort方法,该方法通过指定的属性对项目集合进行排序。在此方法完成时,集合的索引将重置为1。因此,要获取第一个项目,请使用1索引而不是0。请注意,Attachments对象包含一组
Attachment
对象,这些对象表示Outlook项目中的附件。使用Attachments
属性可返回任何Outlook项目(便笺除外)的Attachments
集合。