我试图通过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包含我感兴趣的域名列表。
当我运行第二个脚本时,我没有得到任何结果,但是当我运行单个通配域时,我得到了负载。
有什么想法吗?
由于
安德鲁
答案 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