【发布时间】:2016-07-29 12:24:49
【问题描述】:
我有一组来自 Outlook 的 MailItems。我想搜索每个邮件项目并根据数组中包含的搜索词列表返回Subject 和Category - 在名为$searchArray 的示例中。
例如:
$mailbox = "my.mailbox@example.com"
$outlook = New-Object -com Outlook.Application
$ns = $outlook.GetNamespace("MAPI")
$inbox = $ns.Folders.Item($mailbox).Folders.Item("Inbox")
$searchItems = $inbox.Folders.Item("MySubFolder").Folders.Item("MyNestedSubFolder").Items
$searchArray = (
"Category1", ("searchTerm1","searchTerm2","searchTerm3"),
"Category2", ("searchTerm4","searchTerm5"),
"Category3", ("searchTerm6")
)
foreach ($msg in $searchItems) {
$msg | select Subject, # <Category where email address contains one of the search terms>
}
我想返回Subject,然后是一个名为Category 的列,它将查看$msg.SenderEmailAddress,如果$searchArray 中的任何searchTerms 包含在地址中,则返回具有里面的那个搜索词。
例如,如果 SenderEmailAddress 值之一是“searchTerm2@somewhere.com”,则将 Category1 作为 Category 返回。
【问题讨论】:
-
Nitpick:使用
example.com作为域示例。 -
在您的输出中:为了确保所有项目返回正确的数据,它们必须返回相同数量的属性。因此,您要么需要返回所有类别并突出显示您想要的类别,要么有一个自定义字段来显示匹配的类别。一封电子邮件可以匹配多个类别吗?当它发生时会发生什么?您是否偏爱现在的
$searchArray结构?对其进行一些更改将使过程更容易 -
@Matt 我不关心搜索数组的结构。只是我将为每个类别提供一个或多个搜索词。考虑搜索词对所有类别都是唯一的。输出将为每个电子邮件地址分配一个类别。
标签: arrays powershell powershell-3.0