2016-10-24 54 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' "