2014-02-27 2 views
1

공유 사서함의 폴더에서 내 컴퓨터의 디렉터리로 특정 이름의 첨부 파일을 전송하려고합니다.Outlook에서 첨부 파일을 읽는 중 - 공유 사서함에서

내 스크립트는 다음

#file path 
$filepath = “c:\test” 
$account = "[email protected]" 


#date string to search for in attachment name 
$date = Get-Date -Format yyyyMMdd 


#set outlook to open 
$o = New-Object -comobject outlook.application 
$n = $o.GetNamespace(“MAPI”) 

$Account = $n.Folders | ? { $_.Name -eq $account }; 
    $f = $Account.Folders | ? { $_.Name -match 'Folder Containing Target Files' }; 



#now loop through them and grab the attachments 
$f.Items | foreach { 
    $_.attachments | foreach { 
    Write-Host $_.filename 
    $a = $_.filename 
    If ($a.Contains($date)) { 
    $_.saveasfile((Join-Path $filepath $a)) 
     } 
    } 
} 

내가받을 다음과 같은 오류 : 나는 스크립트에서 다음 블록을 제거 할 때 You cannot call a method on a null-valued expression. 이제

, 그것은 또한 오류가 발생하지 않지만, 파일 이름을 기록하지 않습니다.

$a = $_.filename 
     If ($a.Contains($date)) { 
     $_.saveasfile((Join-Path $filepath $a)) 
      } 

이것은 제가 성공적으로 사서함에 연결하지하고 생각하게 : 하위 폴더가 $date 값을 만족하는 파일이 포함 된 이메일을 가지고 있기 때문에 이것은 잘못된 것입니다.

이 공유 사서함에서 파일을 성공적으로 전송할 수 있도록 스크립트에서 변경해야 할 것이 있습니까? 사서함에 대한 읽기/쓰기/삭제 권한이 있습니다.

답변

0

Outlook을 다시 시작하면 위의 스크립트가 작동합니다. 필자는 공유 사서함에 첨부 파일이있는 들어오는 전자 메일에 대한 폴더를 만들었 기 때문에 Outlook이 다시 열리기 전에 새 폴더가 등록되지 않았기 때문에 이것이라고 생각합니다.

관련 문제