Как указать подпапку Inbox с помощью Powershell - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь получить доступ к подпапке «Входящие» с именем «подпапка» в 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...

Как мне указать эту подпапку?

IЯ уверен, что это действительно просто, поэтому я собираюсь «потерять его».Заранее спасибо!

* Позже в моем коде я выполняю поиск в теле слова "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...
}

ОК, я думаю, что это работает сейчас ...

Я не знаю, что я былпоступаю неправильно, хотя это буквально мой первый день, когда я использую Powershell, так что это неудивительно, на самом деле.

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012
$targetfolder = $inbox.Folders | where-object { $_.name -eq "subfolder" }
$targetfolder.items | where-object { $_.body -match "keyword" } | % { $_.body } # can then redirect the body to file etc.

РЕДАКТИРОВАТЬ: не уверен, почему ваше новое редактирование не будет работать.Похоже, ваша конструкция похожа на ту, что была у меня выше, которую я проверил по своему собственному почтовому ящику.

РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ: Убедитесь, что если вы используете вне файла, вы добавляете результаты, а не перезаписываетес каждым совпадением.

1 голос
/ 21 февраля 2012

Попробуйте использовать командлет 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') }
...