共用方式為


重複或無效的屬性會在 Microsoft 365 中防止目錄同步處理

徵狀

在 Microsoft 365 中,當目錄同步處理完成時,系統管理員會收到下列電子郵件訊息警告:

From: [MSOnlineServicesTeam@MicrosoftOnline.com](mailto:msonlineservicesteam@microsoftonline.com)Subject: Directory Synchronization Error Report

電子郵件訊息中的錯誤報告可能包含下列一或多個錯誤訊息:

  • 您的 Microsoft Online Services 目錄中已經存在具有相同 Proxy 位址的同步處理物件。
  • 找不到使用者標識碼,因此無法更新此物件。
  • 無法在 Microsoft Online Services 中更新此對象,因為與此對象相關聯的下列屬性具有可能已經與本機目錄中另一個對象相關聯的值。
  • 無法更新這個對象,因為下列與此對象相關聯的屬性具有可能已經與本機目錄服務中另一個對象相關聯的值:[UserPrincipalName john@contoso.com;]。 更正或移除本機目錄中的重複值。
  • 無法更新這個對象,因為下列與此對象相關聯的屬性具有可能已經與本機目錄服務中另一個對象相關聯的值:[ProxyAddresses SMTP:john@contoso.com;]。 更正或移除本機目錄中的重複值。

此外,如果您執行 Microsoft Entra ID (Connect) Sync Service,則會在應用程式登入事件查看器中記錄包含下列其中一個錯誤訊息的事件標識碼 6941 實例:

Event ID: 6941
Log Name: Application
Source: ADSync
Level: Error
Details:
ECMA2 MA export run caused an error. 

Error Name: AttributeValueMustBeUnique
Error Detail: Unable to update this object because the following attributes associated with this object have values that may already be associated with another object in your local directory services: [UserPrincipalName john@contoso.com;]. Correct or remove the duplicate values in your local directory. Please refer to https://support.microsoft.com/kb/2647098 for more information on identifying objects with duplicate attribute values.
Event ID: 6941
Log Name: Application
Source: ADSync
Level: Error
Details:
ECMA2 MA export run caused an error.

Error Name: InvalidSoftMatch
Error Detail: Unable to update this object because the following attributes associated with this object have values that may already be associated with another object in your local directory services: [ProxyAddresses SMTP:john@contoso.com;]. Correct or remove the duplicate values in your local directory.

原因

如果內部部署 Active Directory Domain Services (AD DS) 架構中的用戶物件具有重複或無效的別名值,而且這些用戶對象在目錄同步處理期間未從 AD DS 架構正確同步至 Microsoft 365,就可能發生此問題。

Microsoft 365 中的所有別名值對於指定的組織而言都必須是唯一的。 即使您在 Simple Mail Transfer Protocol (SMTP) 位址的 at 符號 (@) 後面有多個唯一後綴,所有別名值都必須是唯一的。

在內部部署環境中,您可以擁有與 SMTP 位址中 at 符號 (@) 後面的後綴相同的別名值。只要它們是唯一的。

如果您建立在雲端中具有重複別名值的物件,Microsoft 365,若要讓別名成為唯一的,一個別名會附加唯一的數位。 (例如,如果重複的別名值是 “Bert”,其中一個值就會自動變成 “Bert2”。如果已經使用 「Bert2」 則別名會變成 「Bert3」 ,依此類推。) 不過,如果在內部部署 AD DS 中建立具有重複別名值的物件,則當目錄同步處理執行,且物件同步處理失敗時,就會發生物件衝突。

解決方案

若要解決此問題,請判斷與其他 AD DS 物件衝突的重複值和值。 若要這樣做,請使用下列其中一種方法。

方法 1:使用 IdFix Microsoft Entra Synchronization Tool 錯誤補救工具

使用IdFix Microsoft Entra Synchronization Tool Error Remediation Tool 來識別重複或無效的屬性。 若要使用 IdFix 工具來解析重複的屬性,請參閱下列Microsoft知識庫文章:

執行 IdFix 工具之後,2857385 兩個或多個物件的 ERROR 數據行中會顯示 「重複」

方法 2:將現有的內部部署用戶對應至 Microsoft Entra 使用者

若要這樣做,請參閱下列Microsoft知識庫文章:

2641663 如何使用 SMTP 比對來比對內部部署用戶帳戶,以Microsoft 365 個使用者帳戶進行目錄同步處理

方法 3:判斷未透過目錄同步處理在 Microsoft Entra ID 中建立的物件所造成的屬性衝突

若要判斷使用 Microsoft 365 管理工具所建立的用戶物件所造成的屬性衝突 (,而且未透過目錄同步) 在 Microsoft Entra ID 中建立,請遵循下列步驟:

  1. 判斷內部部署 AD DS 用戶帳戶的唯一屬性。 若要這樣做,請在已安裝 Windows 支援工具的電腦上,遵循下列步驟:

    1. 按兩下 [開始],按兩下 [ 執行],輸入 ldp.exe,然後按兩下 [ 確定]

    2. 按兩下 [連線],按兩下 [ 連線],輸入AD DS域控制器的電腦名稱,然後按兩下 [ 確定]

    3. 按兩下 [連線],按兩下 [ 系結],然後按兩下 [ 確定]

    4. 按兩下 [檢視],按兩下 [樹視圖],選取 [BaseDN ] 下拉式清單中的 AD DS 網域,然後按兩下 [ 確定]

    5. 在瀏覽窗格中,找出 ,然後按兩下未正確同步的物件。 視窗右側的 [詳細數據] 窗格會列出所有物件屬性。 下列範例顯示物件屬性:

      顯示物件屬性範例的螢幕快照。

    6. 記錄 userPrincipalName 屬性的值,以及 multivalue proxyAddresses 屬性中的每個 SMTP 位址。 您稍後將需要這些值。

      屬性名稱 範例 附註
      proxyAddresses proxyAddresses (3) : x500:/o=Exchange/ou=Exchange 管理群組 (GroupName) /cn=Recipients/cn=GUID;smtp:7628376@service.contoso.com;SMTP:7628376@contoso.com; 屬性卷標旁括弧中顯示的數位會指出多重值屬性中的 Proxy 位址值數目。 每個不同的 Proxy 位址值都是以分號 (;) 表示。 主要 SMTP Proxy 位址值會以大寫 「SMTP:
      userPrincipalName 7628376@contoso.com

      注意事項

      Ldp.exe 包含在 Windows Server 2008 和 Windows Server 2003 支援工具中。 Windows Server 2003 支援工具包含在 Windows Server 2003 安裝媒體中。 或者,若要取得此工具,請移至下列Microsoft網站: Windows Server 2003 Service Pack 2 32 位支援工具

  2. 使用適用於 Windows PowerShell 的 Azure Active Directory 模組連線到 Microsoft 365。 若要這樣做,請遵循下列步驟:

    1. 依序按兩下 [ 開始]、 [所有程式][Microsoft Entra ID],然後按兩下 [適用於 Windows PowerShell 的 Azure Active Directory 模組]

    2. 以顯示命令的順序輸入下列命令,然後在每個命令之後按 Enter:

      $cred = get-credential
      

      注意事項

      當系統提示您時,請輸入Microsoft 365 系統管理員認證。

      Connect-MSOLService –credential $cred
      

      注意事項

      自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模組已被取代。 若要深入瞭解,請閱讀 淘汰更新。 在此日期之後,這些模組的支援僅限於移轉協助Microsoft Graph PowerShell SDK 和安全性修正。 已淘汰的模組會繼續運作到 2025 年 3 月 30 日。

      建議您移轉至 Microsoft Graph PowerShell ,以與Microsoft Entra ID 互動, (先前稱為 Azure AD) 。 如需常見的移轉問題,請參閱 移轉常見問題注意: 1.0.x 版的 MSOnline 可能會在 2024 年 6 月 30 日之後中斷。

      讓主控台視窗保持開啟。 您必須在下一個步驟中使用它。

  3. 在 Microsoft 365 中檢查重複的 userPrincipalName 屬性。

    在您在步驟 2 中開啟的控制台連線中,以它們的呈現順序輸入下列命令,然後在每個命令之後按 Enter:

    $userUPN = "<search UPN>"
    

    注意事項

    在此命令中,佔位元元 「search UPN」 代表您在步驟 1f 中記錄的 UserPrincipalName 屬性。

    get-msoluser –UserPrincipalName $userUPN | where {$_.LastDirSyncTime -eq $null}
    

    讓主控台視窗保持開啟。 您將在下一個步驟中再次使用它。

  4. 檢查是否有重複的 proxyAddressesattributes。 在您在步驟 2 中開啟的控制台連線中,以它們的呈現順序輸入下列命令,然後在每個命令之後按 Enter:

    $UserCredential = Get-Credential
    Connect-ExchangeOnline -Credential $UserCredential
    
  5. 針對您在步驟 1f 中記錄的每個 Proxy 位址專案,以它們的呈現順序輸入下列命令,然後在每個命令之後按 Enter:

    $proxyAddress = "<search proxyAddress>"
    

    注意事項

    在此命令中,佔位元元“search proxyAddress” 代表您在步驟 1f 中記錄的 proxyAddresses 屬性值。

    Get-EXOMailbox | Where {[string] $str = ($_.EmailAddresses); $str.tolower().Contains($proxyAddress.tolower()) -eq $true} | foreach {get-MsolUser -ObjectID $_.ExternalDirectoryObjectId | Where {($_.LastDirSyncTime -eq $null)}}
    

在步驟 3 和 4 中執行命令之後傳回的專案,代表未透過目錄同步處理建立的用戶物件,且具有與未正確同步處理之物件衝突的屬性。

判斷衝突或無效的屬性值之後,請遵循下列Microsoft知識庫文章中的步驟來針對問題進行疑難解答:

2643629 使用 Azure Active Directory 同步處理工具時,一或多個物件不會同步處理

其他相關資訊

本文中的 Windows PowerShell 命令需要適用於 Windows PowerShell 的 Azure Active Directory 模組。 如需適用於 Windows PowerShell 的 Azure Active Directory 模組詳細資訊,請移至下列Microsoft網站:

Microsoft Entra Cmdlet

是否仍需要協助? 前往 Microsoft Community