Powershell 从动态分发列表 O365 中排除组成员

Powershell 从动态分发列表 O365 中排除组成员

我正在 Office 365 Exchange Online 中创建一个全动态通讯组。我使用 Powershell 执行此操作。我们将此组称为 AllTestGroup。以下是有关设置的一些信息。

  • Exchange 在线
  • 本地 Active Directory
  • 大多数邮箱都与本地广告用户相关联。(ADSync)
  • 一些邮箱仅适用于云。
  • 广告用户的帐户中未发现任何自定义属性或扩展属性(继承了该问题)。但是它确实有 msDS-CloudExtensionAttribute0-20。当您设置一个时,它不会出现在 Office 365 端。此外,当您尝试添加时,我们会收到 Azure Active Directory 和 Exchange Online 错误“无法更新本地主目录同步对象或当前正在迁移的对象的指定属性。DualWrite(图形)”

以下是客户需要/要求的内容:

  • 包含所有 UserMailbox 的单个组
  • 没有邮件联系人
  • 排除此 AD 组中的任何人“CN=AllExclusion,OU=SG,DC=示例,DC=本地”
  • 排除此 O365 通讯组中的任何人:[电子邮件保护]
  • 无额外费用

这是我为此创建的过滤器:

(`
    (RecipientType -eq 'UserMailbox') `
    -and (-not(RecipientType -eq 'MailContact')) `
    -and (-not(MemberOfGroup -eq 'CN=AllExclusion,OU=SG,DC=Example,DC=Local')) `
    -and (-not(MemberOfGroup -eq '[email protected]')) `
    -and (-not(Name -like 'SystemMailbox{*')) `
    -and (-not(Name -like 'CAS_{*')) `
    -and (-not(RecipientTypeDetailsValue -eq 'MailboxPlan')) `
    -and (-not(RecipientTypeDetailsValue -eq 'DiscoveryMailbox')) `
    -and (-not(RecipientTypeDetailsValue -eq 'PublicFolderMailbox')) `
    -and (-not(RecipientTypeDetailsValue -eq 'ArbitrationMailbox')) `
    -and (-not(RecipientTypeDetailsValue -eq 'AuditLogMailbox')) `
    -and (-not(RecipientTypeDetailsValue -eq 'AuxAuditLogMailbox')) `
    -and (-not(RecipientTypeDetailsValue -eq 'SupervisoryReviewPolicyMailbox')) `
    -and (-not(RecipientTypeDetailsValue -eq 'GuestMailUser'))`
)

(使用 ` 标记拆分代码以提高可读性。)这是我面临的问题。当我运行获取动态分发组成员,我仍然可以看到 AllExclusion 安全组内的用户。我还可以看到[电子邮件保护]。例如,Ellan Smith 在 AllExclusion 安全组内。她出现在列表中。为了确保我完全同步,我运行了 Start-ADSyncSyncCycle - PolicyType Initial 和 Delta。我等待了建议的 20 分钟,然后再次尝试。结果相同。

我感觉我缺少了一些小东西,但我不知道那是什么。

答案1

这是一个特殊情况。我试图从本地 AD 中提取数据,而我本应该从 Azure AD 中提取数据。在此行中:

-and (-not(MemberOfGroup -eq 'CN=AllExclusion,OU=SG,DC=Example,DC=Local')) `

我的目标是从本地 AD 中排除所有 DN 名称。我需要获取 Azure AD 的 DN。原因是 Exchange Online 指向的是 Azure,而不是本地 AD。如果这是本地内部部署 Exchange,那么这种方法可行,但这种方法不行。要获取 DN,您需要运行以下命令:

(Get-DistributionGroup AllExclusion).DistinguishedName

DN 将会大得多。它看起来会像这样:

CN=AllExclusion,OU=Example.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=NAMPR##A###,DC=PROD,DC=OUTLOOK,DC=COM

因此你的排除将看起来像这样:

-and (-not(MemberOfGroup -eq 'CN=AllExclusion,OU=Example.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=NAMPR##A###,DC=PROD,DC=OUTLOOK,DC=COM'))

最终的收件人过滤器如下所示:

(
    (RecipientType -eq 'UserMailbox') `
    -and (RecipientType -ne 'MailContact') `
    -and (MemberOfGroup -ne 'CN=AllExclusion,OU=Example.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=NAMPR##A###,DC=PROD,DC=OUTLOOK,DC=COM') `
    -and (Name -notlike 'SystemMailbox{*') `
    -and (Name -notlike 'CAS_{*') `
    -and (RecipientTypeDetailsValue -ne 'MailboxPlan') `
    -and (RecipientTypeDetailsValue -ne 'DiscoveryMailbox') `
    -and (RecipientTypeDetailsValue -ne 'PublicFolderMailbox') `
    -and (RecipientTypeDetailsValue -ne 'ArbitrationMailbox') `
    -and (RecipientTypeDetailsValue -ne 'AuditLogMailbox') `
    -and (RecipientTypeDetailsValue -ne 'AuxAuditLogMailbox') `
    -and (RecipientTypeDetailsValue -ne 'SupervisoryReviewPolicyMailbox') `
    -and (RecipientTypeDetailsValue -ne 'GuestMailUser')`
)

相关内容