本文介绍 BypassDirSyncOverridesEnabled 功能,以及如何还原 Mobile 和 otherMobile 属性从 Microsoft Entra ID 到本地 Active Directory 的同步。
无法从 Microsoft Entra ID 或 Microsoft 365 管理门户更改已同步的用户属性,也无法通过任何可用的 PowerShell 模块进行更改。 直到最近,Microsoft Entra 用户的名为 MobilePhone 和 AlternateMobilePhones 的属性才成为例外。 这些属性分别从本地 Active Directory 属性mobile 和 otherMobile 同步,但通常最终用户可以通过他们的配置文件页面在 Microsoft Entra ID 中更新 MobilePhone 属性中的电话号码。 同步用户无法再更改 MobilePhone 和 AlternateMobilePhones 属性,除非使用 Microsoft Entra Connect。
以前,管理员和同步用户能够更新Microsoft Entra ID 中的 MobilePhone 和 AlternateMobilePhones 属性的值。 同步用户无法再执行此操作。 当这种情况可能发生时,如果这些属性来自本地 Active Directory,同步 API 不会遵循其更新。 这通常称为“DirSyncOverrides”功能。 在 Active Directory 中的移动或其他Mobile属性进行更新后,管理员注意到这些更新并未相应更新 Microsoft Entra ID 中用户的MobilePhone或AlternateMobilePhones,即使通过 Microsoft Entra Connect 引擎成功同步对象。
识别使用不同 Mobile 值的用户
可以使用 ADSyncTools PowerShell 模块中的“Compare-ADSyncToolsDirSyncOverrides”导出 Active Directory 和 Microsoft Entra ID 之间具有不同移动值的用户列表。 这样就可以确定在本地 Active Directory 与 Microsoft Entra ID 之间不同的用户和相应值。 知道这一点很重要,因为启用 BypassDirSyncOverridesEnabled 功能会将 Microsoft Entra ID 中的所有不同值覆盖为本地 Active Directory 中的值。
使用 Compare-ADSyncToolsDirSyncOverrides
作为先决条件,需要运行 Microsoft Entra Connect 版本 2 或更高版本,并使用以下命令从 PowerShell 库安装最新的 ADSyncTools 模块:
Install-Module ADSyncTools
若要比较所有同步用户的 Mobile 值,请运行以下命令:
Compare-ADSyncToolsDirSyncOverrides
此函数将导出包含用户列表的 CSV 文件,其中本地 Active Directory 中的移动值不同于 Microsoft Entra ID 中的相应 MobilePhone 。
在此阶段,可以使用此数据将本地 Active Directory 移动 属性的值重置为Microsoft Entra ID 中存在的值。 这样,便可以从 Microsoft Entra ID 捕获更新的电话号码,并在启用 BypassDirSyncOverridesEnabled 功能之前将此数据保存在本地 Active Directory 中。 为此,请从生成的 CSV 文件导入数据,然后使用 ADSyncTools 模块中的“Set-ADSyncToolsDirSyncOverrides”将值保存在本地 Active Directory 中。
例如,若要从 CSV 文件导入数据并在 Microsoft Entra ID 中提取给定 UserPrincipalName 的值,请使用以下命令:
$upn = '<UserPrincipalName>'
$user = Import-Csv 'ADSyncTools-DirSyncOverrides_yyyyMMMdd-HHmmss.csv' | where UserPrincipalName -eq $upn | select UserPrincipalName,MobileInEntra
Set-ADSyncToolsDirSyncOverridesUser -Identity $upn -MobileInAD $user.MobileInEntra
启用 BypassDirSyncOverridesEnabled 功能
默认情况下, BypassDirSyncOverridesEnabled 功能处于关闭状态。 启用 BypassDirSyncOverridesEnabled 能让租户绕过用户或管理员先前直接在 Microsoft Entra ID 中对 MobilePhone 或 AlternateMobilePhones 所做的任何更改,并遵循本地 Active Directory 的 Mobile 或 OtherMobile 中的值。
启用 BypassDirSyncOverridesEnabled 功能:
若要启用 BypassDirSyncOverridesEnabled 功能,请使用 Microsoft Graph PowerShell 模块。
$directorySynchronization = Get-MgDirectoryOnPremiseSynchronization
$directorySynchronization.Features.BypassDirSyncOverridesEnabled = $true
Update-MgDirectoryOnPremiseSynchronization -OnPremisesDirectorySynchronizationId $directorySynchronization.Id -Features $directorySynchronization.Features
验证 BypassDirSyncOverridesEnabled 功能的状态:
(Get-MgDirectoryOnPremiseSynchronization).Features.BypassDirSyncOverridesEnabled
启用该功能后,使用以下命令在 Microsoft Entra Connect 中启动完整同步周期:
Start-ADSyncSyncCycle -PolicyType Initial
注释
仅将更新具有不同 MobilePhone 或 AlternateMobilePhones 值的对象(来自本地 Active Directory)。
在 Microsoft Entra ID 和本地 Active Directory 中管理手机号码
若要管理用户的电话号码,管理员可以使用 ADSyncTools 模块中的以下一组函数读取、写入和清除本地 Active Directory 中的值,以及从 Microsoft Entra ID 读取 mobilePhone 。
从本地 Active Directory 获取 Mobile 属性:
Get-ADSyncToolsDirSyncOverridesUser 'User1@Contoso.com' -FromAD
从 Microsoft Entra ID 获取 MobilePhone 属性:
Get-ADSyncToolsDirSyncOverridesUser 'User1@Contoso.com' -FromEntraID
在本地 Active Directory 中设置 Mobile 属性:
Set-ADSyncToolsDirSyncOverridesUser 'User1@Contoso.com' -MobileInAD '999888777'
清除本地 Active Directory 中的 Mobile 属性:
Clear-ADSyncToolsDirSyncOverridesUser 'User1@Contoso.com'