【问题标题】:Exchange get mailboxes with updates PowershellExchange 获取包含更新 Powershell 的邮箱
【发布时间】:2015-06-03 05:47:14
【问题描述】:

我正在寻找一种有效的方法来使用 Powershell 检索在给定时间后已更改的所有 Exchange 2013 邮箱。 我想做的是获取所有配置更改的邮箱,阅读所有有趣的细节并定期将它们同步到另一个系统(比如每 5 分钟)。

到目前为止,我发现的工作方式是这样的:

$mbx = Get-Mailbox -Resultsize Unlimited|where-object {$_.whenchanged -gt $lasttime}

但是因为这将使所有邮箱保存它们,然后才循环通过它们来过滤结果,这需要大量资源和大量时间(>10000 个邮箱)。

有没有更好的方法来做到这一点?如果可以使用 LDAP,那就太好了。

谢谢 最好的问候

【问题讨论】:

  • 您可以使用-Filter 开关。
  • 我之前尝试过使用过滤器开关,例如 get-mailbox -filter {whenchanged -gt $lasttime} 但是由于变量的远程处理问题,这不起作用。现在我开始使用它了: $mbx = get-mailbox -DomainController $dc -filter ([scriptblock]::create("whenchanged -gt '$lastTime'"))

标签: active-directory ldap exchange-server


【解决方案1】:

是的,您可以改为使用 LDAP,Exchange 使用 Active Directory 作为其目录服务,例如,如果将代理地址添加到邮箱,则代理地址属性 https://msdn.microsoft.com/en-us/library/ms679424%28v=vs.85%29.aspx 会在 Active Directory 中更新。 whenchanged 属性只是活动目录值的反映,因此任何使用例如 LDAP 查询该值的代码都将返回相同的结果。您可以使用 LDAP 做的其他事情是使用 WMI 订阅事件,以便在修改对象时获得通知类型事件,例如 https://powerevents.codeplex.com/

干杯 格伦

【讨论】:

  • 嗨,我已经考虑过使用 whenChanged 属性,但是这个属性经常更新。它不仅在 Exchange 属性更改时更新,而且在正常属性(包括登录时间)更改时更新。遗憾的是,有“msExchWhenMailboxCreated”,但没有“msExchWhenMailboxChanged”,WMI 看起来确实很有趣,但也需要付出巨大的努力才能使其正常工作。恐怕这对我们的项目来说太过分了。
猜你喜欢
  • 2015-06-11
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 2017-08-01
  • 2015-07-28
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多