Powershell

Powershell 從動態分發列表 O365 中排除組成員

  • December 1, 2021

我正在 Office 365 線上交換中創建一個全動態通訊組。我正在使用 Powershell 執行此操作。我們將這個組稱為 AllTestGroup。這是有關設置的一些資訊。

  • 線上交流
  • 本地活動目錄
  • 大多數郵箱都與本地廣告使用者相關聯。(廣告同步)
  • 一些郵箱是僅限雲的。
  • 在廣告使用者的帳戶中找不到自定義屬性或擴展屬性(繼承問題)。但是它確實有 msDS-CloudExtensionAttribute0-20。當你設置一個時,它不會出現在 Office 365 端。另外,當您嘗試添加時,我們會收到一個 azure Active Directory 並線上交換錯誤“無法更新本地主控目錄同步對像或目前正在遷移的對象的指定屬性。DualWrite (Graph)”

這是客戶需要/要求的:

  • 包含所有 UserMailbox 的單個組
  • 沒有郵件聯繫人
  • 排除此 AD 組中的任何人*“CN=AllExclusion,OU=SG,DC=Example,DC=Local”*
  • 排除此 O365 通訊組中的任何人:AllPRN@Example.org
  • 無額外費用

這是我為此創建的過濾器:

(`
   (RecipientType -eq 'UserMailbox') `
   -and (-not(RecipientType -eq 'MailContact')) `
   -and (-not(MemberOfGroup -eq 'CN=AllExclusion,OU=SG,DC=Example,DC=Local')) `
   -and (-not(MemberOfGroup -eq 'AllPRN@Example.org')) `
   -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'))`
)

(使用 ` 標記拆分程式碼以提高可讀性。)這是我面臨的問題。當我執行Get-DynamicDistributionGroupMemeber時,我仍然看到 AllExclusion 安全組中的使用者。我還看到了 AllPRN@example.org 的成員。例如,Ellan Smith 屬於 AllExclusion 安全組。她出現在名單上。為了確保完全同步,我執行了 Start-ADSyncSyncCycle - PolicyType Initial 和 Delta。我等了 20 分鐘,然後再試一次。結果相同。

我覺得我錯過了一些小東西,但我不知道那是什麼。

這是一個獨特的情況。當我應該從 Azure AD 中提取時,我試圖從本地 AD 中提取。在這一行:

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

我的目標是從本地 AD 中排除 DN 名稱。我需要獲取 Azure AD 的 DN。這樣做的原因是因為線上交換指向的是 azure 而不是本地廣告。如果這是本地本地交換,這將起作用,但事實並非如此。要獲取 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')`
)

引用自:https://serverfault.com/questions/1085096