【问题标题】:Powershell (exchange message search)Powershell(交换消息搜索)
【发布时间】:2014-02-18 16:26:25
【问题描述】:

我只是将 C+P this 代码添加到我的 PowerShell 中,这与我在超级用户上提出的 this 问题有关。

它准确地为我提供了我正在寻找的内容,但仅限于今天的电子邮件,有人可以告诉我如何为过去两个月的电子邮件添加过滤器吗?我查看了代码,但看不到任何与数据范围相关的内容,因此可能需要运行另一个 cmdlet?

【问题讨论】:

    标签: powershell exchange-server


    【解决方案1】:

    粗略浏览一下您链接的脚本,各个电子邮件似乎在一个 foreach 循环中被迭代,该循环使用 Get-MessageTrace 的输出作为要迭代的对象集合。根据this documentationGet-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 的输出)而不是字符串...但值得一提的是,如果您只是想硬编码字符串而不是获取当前时间。

    【讨论】:

    • 嗨,您发现的参数显示出真正的希望,但是我并不完全理解代码。我不是 100% 确定我需要在哪里添加新参数才能影响日期范围?我的意思是我不需要声明它们然后将它们称为变量吗?
    • 不用担心。尝试将我建议的行粘贴到您现有的Get-MessageTrace 当前所在的位置。使用您链接的脚本作为参考。您不需要将日期声明为变量,因为(Get-Date) 的输出是DateTime 对象,并且通过将其包装在括号中,Powershell 将知道在将其用作Get-MessageTrace 中的参数之前评估该cmdlet。尝试通过注释掉任何作用于此数据的内容来使用您的脚本,并尝试如何使用Get-MessageTrace 的参数为您带来好处。
    • 我很明显尝试将完整的字符串复制到脚本中,但我根本没有得到任何结果;( - 我会玩它看看我能做什么。
    猜你喜欢
    • 2013-08-09
    • 2017-12-07
    • 2019-03-25
    • 1970-01-01
    • 2011-10-30
    • 2020-08-24
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多