2012-02-21 13 views
0

Powershellを使用してoutlook(2010)の "Inbox"サブフォルダにアクセスしようとしています。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... 

代わりに受信トレイの、私は

...前述したように、受信トレイのサブフォルダを見てみたい+++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++

EDIT:

$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. 

EDIT:あなたの最新の編集が働かない理由がわかりません。あなたのものは上記の構造と似ているように見えますが、私は自分のメールボックスに対して検証しました。

EDIT EDIT:アウトファイルを使用している場合は、それぞれのマッチを上書きするのではなく、結果を追加するようにしてください。

+0

これは時間を割いていただき、ありがとうございます。私の編集した投稿をご覧ください。 – PleaseHelpTheNewGuy

+0

本当に助けてくれました。ダニエルに感謝します。 – PleaseHelpTheNewGuy

+0

もう一度お返事ありがとうございます。私はoutfileのオプションを探しています...>私と対等なシンプルではありませんが、私はそこに着きます。 – PleaseHelpTheNewGuy

1

Where-Objectコマンドレットを使用して、$inbox.Foldersから返されたフォルダをフィルタリングしてみてください。

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

ここに、上記の代替/簡略版があります。これは、信頼性の高いものではありません。MySubfolderという別のフォルダがあり、それはSubfolderとは異なります。

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

Trevor、私は新鮮にしようとはしていませんが、パスを指定する簡単な方法はありませんでしたか?今のところハードコーディングされていれば気にならないでしょう...私の直感はこれでは失敗しており、私は適切な例を見つけるのが困難でした。私は$サブフォルダを宣言するためにあなたの行を試み、私はそれを働かせることができませんでした... – PleaseHelpTheNewGuy

+0

トレバー、私を助けてくれてありがとう! – PleaseHelpTheNewGuy

関連する問題