使用 Azure Active Directory 同步工具时,一个或多个对象未同步

本文解决了一个或多个Active Directory 域服务 (AD DS) 对象属性无法通过 Azure Active Directory 同步工具同步到Microsoft Entra ID的问题。

原始产品版本: 云服务(Web 角色/辅助角色)、Microsoft Entra ID、Microsoft Intune、Azure 备份、Office 365 标识管理
原始 KB 编号: 2643629

注意

本文是否有帮助? 你的输入对我们很重要。 请使用此页面上的 “反馈 ”按钮,让我们了解本文对你的影响,或者我们如何改进它。

症状

一个或多个 AD DS 对象或属性不会按预期同步到Microsoft Entra ID。 当 Active Directory 同步运行时,对象不会同步,你会遇到以下症状之一:

  • 收到一条错误消息,指出属性具有重复值。
  • 你会收到一条错误消息,指出一个或多个属性违反了字符集或字符长度等格式要求。
  • 你不会收到错误消息,目录同步似乎已完成。 但是,某些对象或属性不会按预期更新。

你可能会收到的错误消息的一些示例:

Microsoft Online Services 目录中已存在具有相同代理地址的同步对象。

无法更新此对象,因为找不到用户 ID。

无法在 Microsoft Online Services 中更新此对象,因为与此对象关联的以下属性具有可能已与本地目录中的另一个对象关联的值。

原因

此问题由以下原因之一导致:

  • 尚未验证 AD DS 属性使用的域值。

  • 一个或多个需要唯一值的对象属性具有重复的属性值, (如现有用户帐户中的 proxyAddresses 属性或 U serPrincipalName 属性) 。

  • 一个或多个对象属性违反了限制属性值字符和字符长度的格式要求。

  • 一个或多个对象属性与目录同步的排除规则匹配。

    下表显示了默认同步范围规则:

    对象类型 属性名 同步失败时属性的条件
    联系人 DisplayName 包含“MSOL”
    msExchHideFromAddressLists 设置为“True”
    已启用安全的组 isCriticalSystemObject 设置为“True”
    已启用邮件的组
    (安全组或通讯组列表)
    proxyAddresses



    mail
    没有“SMTP:”地址条目



    不存在
    已启用邮件的联系人 proxyAddresses



    mail
    没有“SMTP:”地址条目



    不存在
    iNetOrgPerson sAMAccountName 不存在
    isCriticalSystemObject 存在
    用户 mailNickName 以“SystemMailbox”开头
    mailNickName 以“CAS_”开头



    包含“}”
    sAMAccountName 以“CAS_”开头



    包含“}”
    sAMAccountName 等于“SUPPORT_388945a0”
    sAMAccountName 等于“MSOL_AD_Sync”
    sAMAccountName 不存在
    isCriticalSystemObject 设置为“True”
  • 用户主体名称 (UPN) 在初始同步后已更改,必须手动更新。

  • Exchange Online简单邮件传输协议 (SMTP) 同步用户的地址未在本地 Active Directory架构中正确填充。

解决方案

若要解决此问题,请根据你的情况使用以下方法之一。

运行 IdFix 以检查重复项、缺少属性和规则冲突

使用 IdFix DirSync 错误修正工具查找阻止同步到Microsoft Entra ID的对象和错误。

  • 如果在运行 IdFix 后在 ERROR 列中看到“空白”,则表示未定义对象的 displayName 属性。 若要解决此问题,请使用以下步骤为对象的 displayName 属性指定值:
  1. 在 对象的 UPDATE 列中,键入其 displayName 属性的名称。
  2. 在“操作”列中,单击“编辑”,然后单击“应用”。
  3. 对 ERROR 列中具有“空白”条目的每个对象重复步骤 1 和 2。
  4. 再次运行 IdFix 以查找更多对象错误。
  • 如果在运行 IdFix 后“ 错误 ”列中看到“重复”,则两个或多个对象具有相同的电子邮件地址。 若要解决此问题,请使用以下步骤为 对象指定唯一的电子邮件地址:
  1. 在 对象的 UPDATE 列中,键入尚未使用的电子邮件地址。
  2. 在“操作”列中,单击“编辑”,然后单击“应用”。
  3. 再次运行 IdFix 以查找更多对象错误。

确定不是通过目录同步在 Microsoft Entra ID 中创建的对象引起的属性冲突

若要确定由使用管理工具 (创建且未通过目录同步) 在 Microsoft Entra ID 中创建的用户对象引起的属性冲突,请执行以下步骤:

  1. 确定本地 AD DS 用户帐户的唯一属性。 若要执行此操作,请在安装了 Windows 支持工具的计算机上执行以下步骤:

    1. 依次选择“ 开始”、“ 运行”、“ldp.exe”,然后选择“ 确定”。

    2. 依次选择“ 连接”、“ 连接”、键入 AD DS 域控制器的计算机名称,然后选择“ 确定”。

    3. 依次选择“ 连接”、“ 绑定”和“ 确定”。

    4. 依次选择“ 视图”、“ 树视图”、“ BaseDN ”下拉列表中的 AD DS 域,然后选择“ 确定”。

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

      Windows 支持工具的导航和详细信息窗格的屏幕截图,其中列出了所有对象属性。

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

      属性名 示例 注意
      proxyAddresses proxyAddresses (3) :x500:/o=Exchange/ou=Exchange 管理组 (FYDIBOHF23SPDLT) /cn=Recipients/cn=1ae75fca0d3a4303802cea9ca50fcd4f-7628376;smtp:7628376@service.contoso.com;SMTP:7628376@contoso.com;
      1. 属性标签旁边的括号中显示的数字指示多值属性中的代理地址值的数目。

      2.每个不同的代理地址值由分号 (;) 指示。

      3.主 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. 使用用于Windows PowerShell的 Azure Active Directory 模块连接到 Microsoft Entra ID。 有关详细信息,请转到使用Windows PowerShell管理Microsoft Entra ID

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

  3. 检查重复的 userPrincipalName 属性。

    在步骤 2 中打开的控制台连接中,按命令的显示顺序键入以下命令。 在每个命令后按 Enter:

    $userUPN = "<search UPN>"
    

    注意

    在此命令中,占位符“<search UPN>”表示在步骤 1f 中记录的 UserPrincipalName 属性。

    Get-MSOLUser -UserPrincipalName $userUPN | where {$_.LastDirSyncTime -eq $null}
    

    注意

    自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模块已弃用。 若要了解详细信息,请阅读 弃用更新。 在此日期之后,对这些模块的支持仅限于 Microsoft Graph PowerShell SDK 和安全修补程序的迁移帮助。 弃用的模块将继续运行到 2025 年 3 月 30 日。

    建议迁移到 Microsoft Graph PowerShell,以便与以前为 Azure AD) Microsoft Entra ID (交互。 有关常见的迁移问题,请参阅 迁移常见问题解答注意: MSOnline 1.0.x 版可能会在 2024 年 6 月 30 日之后遇到中断。

    使控制台窗口保持打开状态。 在下一步中,你将再次使用它。

  4. 检查是否存在重复的 proxyAddresses 属性。 在步骤 2 中打开的控制台连接中,运行以下命令:

    Import-Module ExchangeOnlineManagement
    
  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 -UserPrincipalName $_.MicrosoftOnlineServicesID | where {($_.LastDirSyncTime -eq $null)}}
    

在步骤 3 和步骤 4 中运行命令后返回的项表示未通过目录同步创建且具有与未正确同步的对象冲突的属性的用户对象。

更新 AD DS 属性以删除重复项、规则冲突和范围排除项

根据以下信息确定阻止同步的特定属性:

  • 管理电子邮件
  • Office 365部署就绪工具输出的报告
  • 默认目录同步范围规则和自定义规则

标识特定属性值后,使用以下方法之一编辑属性值:

  • 使用Active Directory 用户和计算机工具编辑属性值。
  1. 打开Active Directory 用户和计算机,然后选择 AD DS 域的根节点。
  2. 选择“ 视图”, 并确保选择了“ 高级功能 ”选项。
  3. 在左侧导航窗格中,找到用户对象,右键单击它,然后选择 “属性”。
  4. 在“对象编辑器”选项卡上,找到所需的属性。 选择“ 编辑”,然后将属性值编辑为所需的值。
  5. 选择“确定”两次。
  • 使用 Active Directory 服务接口 (ADSI) Edit 更新 AD DS 中的对象属性。 你可以下载并安装 ADSI Edit 作为 Windows Server 工具包的一部分。 若要使用 ADSI Edit 编辑属性,请执行以下步骤。

警告

此过程需要 ADSI 编辑。 错误地使用 ADSI Edit 可能会导致严重问题,可能需要重新安装操作系统。 Microsoft 无法保证可以解决因使用 ADSI Edit 错误而导致的问题。 使用 ADSI Edit 的风险自担。

  1. 依次选择“ 开始”、“ 运行”、“ADSIEdit.msc”,然后选择“ 确定”。
  2. 在导航窗格中右键单击“ ADSI 编辑 ”,选择“ 连接到”,然后选择“ 确定” 以加载域分区。
  3. 找到用户对象,右键单击它,然后选择 “属性”。
  4. “属性” 列表中,找到所需的属性。 选择“ 编辑”,然后将属性值编辑为所需的值。
  5. 选择 “确定” 两次,然后退出 ADSI 编辑。

创建新组并将其添加到未同步的内置组

若要解决某些内置组 ((例如域用户组) )未同步的问题,请创建一个新组,其中包含内置组的所有适用成员和适当权限。 然后,将该组添加为未同步的内置组的成员。 使用新组而不是内置组来管理成员。 使用此方法时,仍只能管理一个组。

你不希望更改内置组的属性或更改标识同步设备的范围规则以允许同步关键系统对象。 它可能会触发其他意外行为。

使用 SMTP 匹配使本地用户对象同步到现有用户对象

有关详细信息,请参阅如何使用 SMTP 匹配将本地用户帐户与Office 365用户帐户进行目录同步

手动更新用户帐户 UPN

若要更新在初始目录同步发生后获得许可的用户帐户 UPN,请执行以下步骤:

  1. 安装 Azure Active Directory v2 PowerShell 模块。 有关详细信息,请参阅 Azure Active Directory v2 PowerShell 模块

  2. 在 Azure Active Directory v2 PowerShell 提示符下运行以下 cmdlet:

    $cred = get-credential
    

    注意

    出现提示时,输入管理员凭据。

    Connect-AzureAD
    
    Set-AzureADUser -ObjectId [CurrentUPN] -UserPrincipalName [NewUPN]
    

使用 本地 Active Directory 属性更新用户 SMTP 地址

当 SMTP 属性未以预期方式同步到Exchange Online时,可能需要更新本地 Active Directory属性。 若要更新本地 Active Directory属性,以便在Exchange Online中显示正确的电子邮件地址,请使用解决方法 2 操作下表中的属性。

本地 Active Directory 属性名称 本地 Active Directory 属性值示例 示例Exchange Online电子邮件地址
proxyAddresses Smtp:user1@contoso.com 主 SMTP: user1@contoso.com
辅助 SMTP: user1@contoso.onmicrosoft.com
proxyAddresses Smtp:user1@contoso.com 主 SMTP: user1@contoso.onmicrosoft.com 辅助 SMTP: user1@contoso.com
proxyAddresses Smtp:user1@contoso.com
Smtp:user1@sub.contoso.com
主 SMTP: user1@contoso.com
辅助 SMTP: user1@sub.contoso.com
辅助 SMTP: user1@contoso.onmicrosoft.com
mail User1@contoso.com 主 SMTP: user1@contoso.com
辅助 SMTP: user1@contoso.onmicrosoft.com
UserPrincipalName User1@contoso.com 主 SMTP: user1@contoso.com
辅助 SMTP: user1@contoso.onmicrosoft.com

与默认域 ((如) )user1@contoso.onmicrosoft.com关联的 Microsoft Online Email 路由地址 (MOERA) 条目是基于用户帐户的别名的解释值。 此专业电子邮件地址与每个Exchange Online收件人紧密相连。 无法管理、删除或创建任何收件人的其他 MOERA 地址。 但是,通过使用 本地 Active Directory 用户对象中的 属性,可以将 MOERA 地址过度设置为主 SMTP 地址。

注意

proxyAddresses 属性中的数据完全屏蔽了邮件属性中Exchange Online电子邮件地址填充的数据。

注意

proxyAddresses 属性和/或邮件属性中是否存在数据完全屏蔽了Exchange Online电子邮件地址填充的 UserPrincipalName 数据。 UPN 可用于管理电子邮件地址。 但是,管理员可以通过填充 proxyAddresses 或邮件属性来决定单独管理电子邮件地址和 UPN。

强烈建议一致地使用这些属性之一来管理已同步用户Exchange Online电子邮件地址。

更多信息

本文中提到的Windows PowerShell命令需要用于Windows PowerShell的 Azure Active Directory 模块。 有关用于Windows PowerShell的 Azure Active Directory 模块的详细信息,请参阅以下文章:
使用 Windows PowerShell 管理Microsoft Entra ID

有关按属性筛选目录同步的详细信息,请参阅以下 Microsoft TechNet wiki 文章:
Azure Active Directory 同步工具同步的属性列表

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。