Поиск писем по теме с помощью powershell - PullRequest
0 голосов
/ 27 мая 2020

Все,

Я застрял на следующем. Я получаю список писем в своем почтовом ящике, и мне нужно искать письма, которые содержат определенную строку c в теме (а затем проанализировать тело этого письма). Я застрял в поиске правильного синтаксиса для фильтрации писем по теме. У меня есть это:

$Outlook = New-Object -comObject Outlook.Application 
$namespace = $Outlook.GetNameSpace("MAPI")
$inbox = $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox)
$emails = $inbox.items
$subjectComparisonExpression = "Meeting topic is: "

Но тогда ничего из этого не работает:

#1
$inbox.items | Where-Object {$_.Subject -like $subjectComparisonExpression} | Write-Host($_.Subject)

#2
$myemails = $inbox.items | Where-Object {$_.Subject -like $subjectComparisonExpression}
Write-Host($myemails.count)

#3
$myemails = $emails | Where {$_.Subject -like $subjectComparisonExpression} 
Write-Host($myemails.count)

Как мне получить список писем, где тема содержит $subjectComparisonExpression?

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Используйте методы Find / FindNext или Restrict класса Items, чтобы найти элементы, соответствующие вашим условиям. Метод Restrict является альтернативой использованию метода Find или FindNext для перебора определенных c элементов в коллекции. Методы Find или FindNext быстрее, чем фильтрация при небольшом количестве элементов. Метод Restrict работает значительно быстрее, если в коллекции большое количество элементов, особенно если ожидается, что будет найдено только несколько элементов в большой коллекции. Вы можете узнать больше о них в следующих статьях:

0 голосов
/ 27 мая 2020

Проблема была с ключевым словом -like. Заменил на '-match', и он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...