【问题标题】:Find Exchange mailboxes that are forwarded to a Distribution List查找转发到通讯组列表的 Exchange 邮箱
【发布时间】:2016-12-06 19:16:42
【问题描述】:

试图找出一种方法来找到所有转发到分发列表的邮箱。

没有运气,谁有更好的主意?

$group=Get-DistributionGroup | select PrimarySmtpAddress
Get-Mailbox  | Where-Object { $_.ForwardingAddress -eq "$group" } | Select-Object Name,ForwardingAddress

【问题讨论】:

  • 很确定你只需要从"$group"中删除"",并且可能需要选择该对象的.name参数,但Get-DistributionGroupMember不适合这个任务?
  • 同理
  • 哦,等等,我明白了,$group 是一个数组,需要进行一些更改才能使其工作,不幸的是我没有额外的时间来 ATM,你给Get-DistributionGroupMember一个镜头?
  • 它给出名称、smtp 等

标签: powershell exchange-server-2010


【解决方案1】:

未经测试(PSv2+;PSv3+ 将允许更简单的语法):

$groupEmailAddresses = Get-DistributionGroup | foreach { $_.PrimarySmtpAddress.ToString() }
Get-Mailbox  | where { $_.ForwardingSmtpAddress -and 
                    $groupEmailAddresses -contains $_.ForwardingSmtpAddress.ToString() } | 
  Select-Object Name, ForwardingSmtpAddress

请注意,虽然许多 PowerShell 运算符可以对 数组(集合)进行操作,但

  • 数组必须在LHS(左侧)
  • 并且 RHS(右侧)必须是 标量(非集合值)

在本例中,-contains 告诉我们 LHS 上的集合在其元素中是否具有单个 RHS 值。

【讨论】:

  • 没有结果为空:(
  • @Owl:由于我无权访问这些 cmdlet,因此我无法自行调查。将所有以| where ... 开头的内容替换为| % { if ($_.ForwardingSmtpAddress) { $_.ForwardingSmtpAddress.ToString() } } 并查看您是否 (a) 获得了电子邮件地址,以及 (b) 它们的格式是否与 $groupEmailAddresses 中的格式相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多