全部,
我需要确定电子邮件是否已从我们的 Exchange 服务器发送到外部地址。遗憾的是,没有特定的发件人可以定位,因为可能有多个发件人向此外部地址发送了邮件。
我做了一些调查,但不幸的是,我找不到可用的脚本。我尝试了一些基于几篇文章的脚本(将用户电子邮件更改为下面的虚拟电子邮件)。如果您有任何建议,我将不胜感激。谢谢。
Get-MessageTrackingLog –ResultSize Unlimited | Where -Property Recipients -Like
“[email protected]”
或者
Get-MessageTrackingLog -Recipients [email protected]
....
答案1
您似乎将Get-MessageTrackingLog
参数 (-Property) 与Where-Object
cmdlet 混合在一起。因此,我们将它移回Get-MessageTrackingLog
一行代码的一部分(如果Recipients
是默认属性,我们根本不需要它)。然后我们可以Recipients
在Where-Object
过滤器中使用。
首先,确认Recipients
不是默认属性,使用:
Get-MessageTrackingLog | Get-Member
如果不是,请使用:
Get-MessageTrackingLog –ResultSize Unlimited -Property Recipients |
Where Recipients -Like “[email protected]”
否则,如果它是默认属性,则使用:
Get-MessageTrackingLog –ResultSize Unlimited |
Where Recipients -Like “[email protected]”
此命令将获取所有邮件跟踪日志,并将它们传送到 where-object 命令(包括 Recipients 属性)。Where-Object
子句将查找收件人包括“[电子邮件保护]“。
-ResultSize Unlimited
会给你一个非常大的数据集。强烈建议使用其他一些属性来限制它。
docs.microsoft 参考Get-MessageTrackingLog
快速浏览一下参数,你会发现有一个参数可以让你指定收件人。名为-Recipients
。因此,你可以将其简化为:
Get-MessageTrackingLog -ResultSize Unlimited -Recipients "[email protected]*"
如果这有效的话,它将比完全转储更加节省时间和处理器效率,而这正是Get-MessageTrackingLog -ResultSize Unlimited
没有任何限制能给你带来的。
我发现Where-Ojbect
akawhere
是 PowerShell 中最强大的 cmdlet 之一,与导入/导出 CSV cmdlet 和Get-Help
一起Get-Member
。