【发布时间】:2014-02-18 16:26:25
【问题描述】:
我只是将 C+P this 代码添加到我的 PowerShell 中,这与我在超级用户上提出的 this 问题有关。
它准确地为我提供了我正在寻找的内容,但仅限于今天的电子邮件,有人可以告诉我如何为过去两个月的电子邮件添加过滤器吗?我查看了代码,但看不到任何与数据范围相关的内容,因此可能需要运行另一个 cmdlet?
【问题讨论】:
标签: powershell exchange-server
我只是将 C+P this 代码添加到我的 PowerShell 中,这与我在超级用户上提出的 this 问题有关。
它准确地为我提供了我正在寻找的内容,但仅限于今天的电子邮件,有人可以告诉我如何为过去两个月的电子邮件添加过滤器吗?我查看了代码,但看不到任何与数据范围相关的内容,因此可能需要运行另一个 cmdlet?
【问题讨论】:
标签: powershell exchange-server
粗略浏览一下您链接的脚本,各个电子邮件似乎在一个 foreach 循环中被迭代,该循环使用 Get-MessageTrace 的输出作为要迭代的对象集合。根据this documentation,Get-MessageTrace 有一个-StartDate 和-EndDate 参数,您可以指定一个日期范围。
因此,您只需使用这些参数即可获得更长的日期范围。下面是一个未经测试的示例,说明您在过去两个月中可能需要做的事情:
Get-MessageTrace -StartDate (Get-Date).AddMonths(-2) -EndDate (Get-Date)
编辑:根据参数文档,您可能需要在获取日期后进行一些额外的格式化。不幸的是,我不在可以测试的地方,但它是这样说的:
使用在运行命令的计算机的区域选项设置中定义的短日期格式。例如,如果计算机配置为使用短日期格式 mm/dd/yyyy,请输入 03/01/2010 以指定 2010 年 3 月 1 日。您可以仅输入日期,也可以输入日期和时间.如果您输入日期和时间,则必须将参数括在引号 (") 中,例如“10/05/2010 5:00 PM”。
这可能没有必要,因为您已经传递了 DateTime 对象(Get-Date 的输出)而不是字符串...但值得一提的是,如果您只是想硬编码字符串而不是获取当前时间。
【讨论】:
Get-MessageTrace 当前所在的位置。使用您链接的脚本作为参考。您不需要将日期声明为变量,因为(Get-Date) 的输出是DateTime 对象,并且通过将其包装在括号中,Powershell 将知道在将其用作Get-MessageTrace 中的参数之前评估该cmdlet。尝试通过注释掉任何作用于此数据的内容来使用您的脚本,并尝试如何使用Get-MessageTrace 的参数为您带来好处。