2016-10-24 56 views
1

我有以下代码在outlook中使用PowerShell保存电子邮件附件。Powershell在过去几天内保存电子邮件附件

$o = New-Object -comobject outlook.application 
$n = $o.GetNamespace("MAPI") 

$Account = $n.Folders | ? { $_.Name -eq ''Mailbox}; 
$f = $Account.Folders | ? { $_.Name -match 'Inbox' }; 

$filepath = "c:\temp\" 
$f.Items| Where-Object {$_.SenderName -eq "Sender"} | foreach { 
    $Subject = $_.Subject 
    $_.attachments|foreach { 
    Write-Host $_.filename 
    $a = $_.filename 
    If ($a.Contains("xls")) { 
    $_.saveasfile((Join-Path $filepath "$Subject.xls")) 
    } 
    } 
} 

问题是这是通过我的整个收件箱,需要一段时间。 有没有办法让它只查看最后一周左右的数据? 或者也许昨天只收到电子邮件? 我希望先查看最近的电子邮件,当它找到第一个匹配时停止查找... 它试图保存的电子邮件每天都会发送给我,并且可能会在找到第一个实例后停止。

谢谢!

+0

'位置对象{($ _发送者姓名-eq “发件人”。) - 和($ _ ReceivedTime.ToString( “年月日”。 )-gt $ dtRestrictedDate.ToString(“yyyyMMdd”))}'?当然,你可以更早地设置所有这些,而不用在比较中使用'ToString'等方法。 – gravity

回答

1

我在清理超过特定日期的服务器上的文件时采取了类似的措施。也许这有助于在这里找到解决方案?

我创建一个变量为我的日期范围

#creates a date that is 14 days before today. 
$limit = (Get-Date).AddDays(-15) 

在我的代码,然后我在下面的条件添加

Where-Object($_.PSIsContainer -and ($_.CreationTime -lt $limit)) 

管这一条款在您过滤电子邮件和我怀疑的意志添加你想要的限制。希望这有助于。

0

使用Items.Find/FindNextItems.Restrict上创建ReceivedTime属性的限制:"[ReceivedTime] >= '10/09/2016' "