获取邮件跟踪日志

获取邮件跟踪日志

全部,

我需要确定电子邮件是否已从我们的 Exchange 服务器发送到外部地址。遗​​憾的是,没有特定的发件人可以定位,因为可能有多个发件人向此外部地址发送了邮件。

我做了一些调查,但不幸的是,我找不到可用的脚本。我尝试了一些基于几篇文章的脚本(将用户电子邮件更改为下面的虚拟电子邮件)。如果您有任何建议,我将不胜感激。谢谢。

Get-MessageTrackingLog –ResultSize Unlimited | Where -Property Recipients -Like[email protected]

或者

Get-MessageTrackingLog -Recipients [email protected]

....

答案1

您似乎将Get-MessageTrackingLog参数 (-Property) 与Where-Objectcmdlet 混合在一起。因此,我们将它移回Get-MessageTrackingLog一行代码的一部分(如果Recipients是默认属性,我们根本不需要它)。然后我们可以RecipientsWhere-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子句将查找收件人包括“[电子邮件保护]“。

docs.microsoft 参考Get-Object

-ResultSize Unlimited会给你一个非常大的数据集。强烈建议使用其他一些属性来限制它。

docs.microsoft 参考Get-MessageTrackingLog

快速浏览一下参数,你会发现有一个参数可以让你指定收件人。名为-Recipients。因此,你可以将其简化为:

Get-MessageTrackingLog -ResultSize Unlimited -Recipients "[email protected]*"

如果这有效的话,它将比完全转储更加节省时间和处理器效率,而这正是Get-MessageTrackingLog -ResultSize Unlimited没有任何限制能给你带来的。

我发现Where-Ojbectakawhere是 PowerShell 中最强大的 cmdlet 之一,与导入/导出 CSV cmdlet 和Get-Help一起Get-Member

相关内容