2012-02-21 2 views
0

Powershell을 사용하여 Outlook 2010의 "받은 편지함"하위 폴더 (예 : "subfolder")에 액세스하려고합니다.Powershell을 사용하여 Inbox 하위 폴더를 지정하는 방법

$olFolderInbox = 6 
$outlook = new-object -com outlook.application; 
$ns = $outlook.GetNameSpace("MAPI"); 
$inbox = $ns.GetDefaultFolder($olFolderInbox) 

# how do I specify a subfolder that's inside Inbox??? 
# I mean, "Inbox\subfolder" where "subfolder" is the name of the subfolder... 

어떻게이 하위 폴더를 지정합니까?

저는 이것이 정말 간단하다는 것을 확신합니다. 그래서 나는 "잃을 것"입니다. 미리 감사드립니다!

* 나중에 내 코드 본문에서 "searchterm"을 검색하고 일치하는 항목이 있으면 텍스트 파일로 결과를 보냅니다. ... 대신받은 편지함의

$inbox.items | foreach { 
if($_.body -match "searchterm") {$_.body | out-file -encoding ASCII foo.txt} # prints to file... 

, 내가 전술 한 바와 같이받은 편지함의 하위 폴더에서보고 싶지

+++++++++++ : 다음 코드는받은 편지함 작동 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++

편집 :

$olFolderInbox = 6 
$outlook = new-object -com outlook.application; 
$ns = $outlook.GetNameSpace("MAPI"); 
$inbox = $ns.GetDefaultFolder($olFolderInbox) 
$targetfolder = $inbox.Folders | where-object { $_.name -eq "Subfolder" } 
$targetfolder.items | foreach { 
if($_.body -match "keyword") {$_.body | out-file -Append -encoding ASCII foo.txt} # keyword match prints body to file... 
} 

OK, 나는 ...이 지금 작동 생각

글자 그대로 Powershell을 사용한 첫날이기는하지만, 내가 뭘 잘못하고 있었는지 모르겠습니다. 정말 놀랍지 않습니다.

+0

VBScript 인 경우 다음과 같이 설정하지 마십시오. Set myNewFolder = inbox.Folders ("subfolder") – PleaseHelpTheNewGuy

+0

전체 소스 코드 샘플을 사용하는 최종 해결책이 있습니까? – Kiquenet

답변

2
$targetfolder = $inbox.Folders | where-object { $_.name -eq "subfolder" } 
$targetfolder.items | where-object { $_.body -match "keyword" } | % { $_.body } # can then redirect the body to file etc. 

편집 : 당신의 최신 편집이 작동하지 않을 이유는 확실하지 않다. 내 우편함에 대해 확인한 위와 비슷한 구조로되어 있습니다.

편집 편집 : 출력 파일을 사용하는 경우 각 일치 항목을 덮어 쓰지 않고 결과를 추가해야합니다.

+0

이 시간을내어 주셔서 감사합니다. 위에 편집 된 게시물을 참조하십시오 ... – PleaseHelpTheNewGuy

+0

오케이, 정말 도움이되었습니다. 다니엘 감사합니다. – PleaseHelpTheNewGuy

+0

다시 한 번 감사드립니다. 지금 outfile 옵션을 찾고 있습니다 ...> 나 >> 대 >>와 같이 단순하지는 않지만 ... 거기에 도달 할 것입니다. – PleaseHelpTheNewGuy

1

Where-Object cmdlet을 사용하여 $inbox.Folders에서 반환 된 폴더를 필터링 해보십시오.

$Subfolder = $inbox.Folders | Where-Object -FilterScript { (Split-Path -Path $_.FolderPath -Leaf) -eq 'Subfolder' } 

위의 대안/단문 버전입니다. Subfolder과는 다른 MySubfolder이라는 폴더를 추가 할 수 있기 때문에 상당히 안정적이지는 않습니다.

$Subfolder = $inbox.Folders | ? { $_.FolderPath.EndsWith('Subfolder') } 
+0

Trevor, 나는 신선하려고하지는 않지만 경로를 지정하는 더 쉬운 방법은 없을까요? 하드 코드 된 (지금은) 코드라면 내게 방해가되지 않을 것입니다 ... 내 직감은이 코드에서 실패하고 있으며 적절한 예제를 찾는 데 어려움을 겪고 있습니다. 나는 $ subfolder를 선언하기 위해 당신의 선을 시험해 보았다. 그리고 나는 그것을 얻지 못했다. ... – PleaseHelpTheNewGuy

+0

Trevor, 나를 도와 줘서 고마워! – PleaseHelpTheNewGuy

관련 문제