Exchange 2007搜索消息日志中是否有通配符域列表?

时间:2014-06-19 14:52:31

标签: powershell exchange-server-2007

我试图通过Exchange 2007系统搜索来自8个不同域的所有电子邮件。

到目前为止,我已成功实现了这项工作:

Get-MessageTrackingLog -ResultSize Unlimited -Start" 01/01/2014" -End" 19/06 / 2014" |其中{$ .sender -like" * @ example.com"} | select-object Timestamp,SourceContext,Source,EventId,MessageSubject,Sender,{$ .Recipients} | export-csv C:\ ExchangeLogResults.txt

但我喜欢的是能够改变"其中"条款类似于get-content,例如:

Get-MessageTrackingLog -ResultSize Unlimited -Start" 01/01/2014" -End" 19/06 / 2014" |其中{$ _。sender -like(get-content。\ list_of_domains.txt)} | select-object Timestamp,SourceContext,Source,EventId,MessageSubject,Sender,{$ _。Recipients} | export-csv C:\ temp \ ExchangeLogResults.txt

list_of_domains.txt包含我感兴趣的域名列表。

当我运行第二个脚本时,我没有得到任何结果,但是当我运行单个通配域时,我得到了负载。

有什么想法吗?

由于

安德鲁

1 个答案:

答案 0 :(得分:0)

你不能那样使用。

我通过从域列表构建一个正则表达式然后使用-match来进行这种过滤:

$DomainList = get-content .\list_of_domains.txt 

[regex]$dom_rgx = "`(?i)(?:" + (($DomainList |% {"@" + [regex]::escape($_)}) -join "|") + ")$"

Get-MessageTrackingLog -ResultSize Unlimited -Start "01/01/2014" -End "19/06/2014" |
 where{$_.sender -match $dom_rgx} | 
 select-object Timestamp,SourceContext,Source,EventId,MessageSubject,Sender,{$_.Recipients} |
 export-csv