重复或无效的属性阻止目录同步Office 365

备注

Office 365 ProPlus 正在重命名为 适用于企业的 Microsoft 365 应用。 有关此更改的详细信息, 请阅读此博客文章

症状

在Microsoft Office 365中,当目录同步完成时,管理员会收到以下电子邮件警告:

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

电子邮件中的错误报告可能包含以下一个或多个错误消息:

  • 同一代理地址的同步对象已存在于你的Microsoft Online Services目录中。
  • 由于找不到用户 ID,无法更新此对象。
  • 无法更新此对象Microsoft Online Services因为与此对象关联的以下属性的值可能已经与本地目录中的另一个对象相关联。
  • 无法更新此对象,因为与此对象关联的以下属性具有的值可能已经与本地目录服务中的另一个对象相关联:[UserPrincipalName john @ contoso.com;]。 更正或删除本地目录中的重复值。
  • 无法更新此对象,因为与此对象关联的以下属性具有的值可能已经与本地目录服务中的另一个对象相关联:[ProxyAddresses SMTP:john @ contoso.com;]。 更正或删除本地目录中的重复值。

此外,如果运行的是 Azure Active Directory (连接) 同步服务,则应用程序登录事件查看器中会记录包含以下错误消息之一的事件 ID 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 域服务 (AD DS) 架构中的用户对象具有重复或无效的别名值,并且这些用户对象在目录同步期间未从 AD DS 架构正确同步到 Office 365,则可能会出现此问题。

对于给定组织,Office 365别名值必须是唯一的。 即使您在简单邮件传输协议 (SMTP) 地址中的 at 符号 (@) 后有多个唯一后缀,所有别名值也必须是唯一的。

在本地环境中,只要别名值根据 SMTP 地址中的 at 符号 (@) 后面的后缀唯一,就可以具有相同的别名值。

如果在云中为用户创建别名值重复Office 365,为了唯一别名,一个别名后面附加了一个唯一的编号。 (例如,如果重复的别名值为"一个",则其中一个会自动变为"一个"。 如果已在使用"为 2",则别名将变为"为 3",等等。) 但是,如果在本地 AD DS 中创建具有重复别名值的对象,则当目录同步运行时将发生对象冲突,并且对象同步将失败。

解决方案

若要解决此问题,请确定与其他 AD DS 对象冲突的重复值和值。 为此,请使用下列方法之一。

方法 1:使用 IdFix Microsoft Azure Active Directory 同步工具错误修正工具

使用 IdFix Microsoft Azure Active Directory 同步工具错误修正工具来标识重复或无效的属性。 若要使用 IdFix 工具解析重复的属性,请参阅以下 Microsoft 知识库文章:

2857385 IdFix 工具后,"重复"将显示在两个或多个对象的 ERROR 列中

方法 2:将现有本地用户映射到Azure AD用户

为此,请参阅以下 Microsoft 知识库文章:

2641663如何使用 SMTP 匹配将本地用户帐户与Office 365用户帐户进行目录同步

方法 3:确定由未通过目录同步在 Azure AD创建的对象导致的属性冲突

若要确定由使用 Office 365 管理工具 (创建的用户对象引起的属性冲突,以及不是通过目录同步 Azure AD 在 Azure AD 中创建) ,请按照以下步骤操作:

  1. 确定本地 AD DS 用户帐户的唯一属性。 为此,在安装了支持工具Windows,请按照以下步骤操作:

    1. 单击 "开始",单击" 运行",ldp.exe",然后单击"确定 "。

    2. 单击 " 连接 连接, 键入 AD DS 域控制器的计算机名称,然后单击"确定 "。

    3. 单击 "连接",单击"绑定",然后单击"确定 "。

    4. 单击 "视图",单击" 视图",在 "BaseDN" 下拉列表中选择"AD DS 域",然后单击"确定 "。

    5. 在导航窗格中,找到并双击未正确同步的对象。 窗口右侧"详细信息"窗格列出了所有对象属性。 以下示例演示对象属性:

      Screenshot shows an example of object attributes.

    6. 在多值 proxyAddresses 属性中记录 userPrincipalName 属性和每个 SMTP 地址的值。 稍后将需要这些值。

      属性名 示例 注释
      proxyAddresses proxyAddresses (3) : x500:/o=Exchange/ou=Exchange Administrative Group (GroupName) /cn=Recipients/cn=GUID; smtp:7628376@service.contoso.com SMTP:7628376@contoso.com ; 属性标签旁边的括号中显示的数字指示多值属性中的代理地址值数。 每个不同的代理地址值由一个分号 (;) 。 主 SMTP 代理地址值由大写字母"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. 连接Office 365模块来Azure Active Directory模块Windows PowerShell。 为此,请按照下列步骤操作:

    1. 单击 开始,单击 所有程序**,单击** Azure Active Directory,然后单击Azure Active Directory 模块Windows PowerShell。

    2. 按显示顺序键入以下命令,然后在每个命令后按 Enter:

      $cred = get-credential
      

      备注

      系统提示时,输入Office 365管理员凭据。

      Connect-MSOLService –credential $cred
      

      使控制台窗口保持打开状态。 您必须在下一步中使用它。

  3. 检查用户地址中的重复 userPrincipalName Office 365。

    在步骤 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 中记录的每个代理地址条目,按显示顺序键入以下命令,然后在每个命令后按 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命令需要使用 Azure Active Directory 模块Windows PowerShell。 有关用于Azure Active Directory模块Windows PowerShell,请转到以下 Microsoft 网站:

Azure Active Directory Cmdlet

仍然需要帮助? 请转到 Microsoft 社区