移动Outlook邮件Powershell

时间:2014-10-22 20:00:41

标签: email powershell outlook

我正在尝试编写一个脚本,该脚本从超过10天的文件夹中的邮件项目下载附件,将它们保存到我的硬盘驱动器,然后将邮件项目移动到已删除的项目文件夹。到目前为止,附件下载工作正常,但是当我添加代码来移动电子邮件时,它只适用于我文件夹中的一半电子邮件。代码如下所示。任何帮助赞赏。

$Folder.Items | foreach{
    $Received = New-Object DateTime
    $Received = $_.ReceivedTime

    $howOld = New-Object int
    $howOld = $Today.subtract($Received)
    $howOld = $howOld | select-object -ExpandProperty Days

    $date = $_.ReceivedTime.ToString("MMddyyyy")

    $howOld

    if ($howOld -gt 10){
           #Save Attachment To Folder
           $_.attachments | foreach{
           $fileName = $_.filename
           $split = $fileName.Split('.')
           $fileName = $split[0]
           $fileExtension = $split[1]
           $fileName = $fileName + '_' + $date + '.' + $fileExtension

           $_.saveasfile((Join-Path $filepath $fileName))
           }
        #Move to Deleted Folder
        $result = $_.Move($deletedFolder)
    }
}

2 个答案:

答案 0 :(得分:1)

能够通过更改循环结构来解决问题。而不是使用foreach我改为迭代计数器。

$emails = $Folder.Items 
For ($i=($emails.count-1);$i -ge 0;$i--)

这纠正了这个问题。

答案 1 :(得分:0)

你也可以强行对待它并做

while ($mails.count -gt 0)
{
    foreach ($mail in $mails) 
    {
        $mail.move($archive)
    }
    $mails = ($inbox.folders.Item("test")).items
}