2014-10-22 3 views
0

메일 항목의 첨부 파일을 10 일이 넘은 폴더에 다운로드하고 내 하드 드라이브에 저장 한 다음 삭제 된 항목 폴더로 메일 항목을 이동하는 스크립트를 작성하려고합니다. 지금까지 첨부 파일 다운로드는 정상적으로 작동하지만 전자 메일을 이동하는 코드를 추가하면 폴더의 전자 메일 중 절반에서만 작동합니다. 코드는 아래와 같습니다. 어떤 도움을 주셔서 감사합니다.Outlook 메시지 이동 Powershell

$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) 
    } 
} 
+0

'$ Folder' 객체의 유형입니까? 또한'.Move()'메서드를 사용하는 대신 Move-Item cmdlet을 사용하려고 시도 할 수도 있습니다. – Paul

+0

Move-Item에서 오류 메시지를 표시합니다. + FullyQualifiedErrorId : PathNotFound, Microsoft.PowerShell.Commands.MoveItemCommand $ Folder는 System .__ ComObject입니다. – halfheartd

+0

아마도 경로가 $ folder.item의 속성이고 항목 자체의 속성이 아니기 때문일 수 있습니다. 어느 유형의 공통 객체입니까? – Paul

답변

1

루핑 구조를 변경하여 문제를 해결할 수있었습니다. 대신 foreach를 사용하여 반복 카운터로 변경했습니다.

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

이 문제를 해결했습니다.

+0

당신이 뭔가를 찾았기로 기쁘다. Get-Item 및 Move-Item cmdlet 등이있을 때 comobject를 사용하여 왜이 작업을 수행하는지 궁금합니다. – Paul

0

당신은 또한 그것을 강제 할 짐승 수

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