2012-02-21 94 views
0

我試圖使用Powershell訪問Outlook(2010)中名爲「子文件夾」的「收件箱」子文件夾。如何使用Powershell指定收件箱的子文件夾

$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,它會不會是這樣的:設置myNewFolder = inbox.Folders(「子文件夾」) – PleaseHelpTheNewGuy 2012-02-21 18:46:33

+0

任何最終解決方案與完整的源代碼示例工作呢? – Kiquenet 2013-08-08 10:08:52

回答

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. 

編輯:不知道爲什麼你的最新的編輯是行不通的。你的結構與我上面的結構相似,我通過自己的郵箱進行了驗證。

編輯編輯:確保如果你使用的是out-file,你會追加結果而不是覆蓋每個匹配。

+0

我很感激你爲此付出的時間,請參閱我上面編輯的帖子...... – PleaseHelpTheNewGuy 2012-02-21 19:28:55

+0

好吧,那真的幫了我很多,謝謝Daniel。 – PleaseHelpTheNewGuy 2012-02-21 19:46:34

+0

再次感謝,我現在正在尋找outfile的選項......並不像我對......那麼簡單......但我會到達那裏。 – PleaseHelpTheNewGuy 2012-02-21 19:51:31

1

嘗試使用Where-Object cmdlet過濾從$inbox.Folders返回的文件夾。

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

這裏是上述的替代/短手版本。這不會很可靠,因爲您可能有另一個名爲MySubfolder的文件夾,它與Subfolder不同。

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

特雷弗,我不想變得新鮮,但是不能有更簡單的方法來指定路徑嗎?如果它是硬編碼的(現在),我不會感到困擾......我的直覺在這個問題上失敗了,我一直很難找到一個合適的例子。我試過你的產品線宣佈$子文件夾,我無法讓它工作... – PleaseHelpTheNewGuy 2012-02-21 19:19:47

+0

特雷弗,謝謝你幫助我! – PleaseHelpTheNewGuy 2012-02-21 19:47:11

相關問題