如何使用 Microsoft Entra 租户的 BypassDirSyncOverridesEnabled 功能。
本文介绍 BypassDirSyncOverridesEnabled 功能,以及如何还原 Mobile 和 otherMobile 属性从 Microsoft Entra ID 到本地 Active Directory 的同步。
一般情况下,无法从 Azure 或 Microsoft 365 管理门户更改已同步用户,也不能通过 PowerShell 使用 Microsoft Entra ID 或 Microsoft Graph PowerShell 模块进行这种更改。 例外情况是 Microsoft Entra 用户的名为 MobilePhone 和 AlternateMobilePhones 的属性。 这两个属性分别从本地 Active Directory 属性 mobile 和 otherMobile 同步,但最终用户可以通过其个人资料页在 Microsoft Entra ID 的 MobilePhone 属性中更新自己的电话号码。 管理员还可以使用 Microsoft Graph PowerShell 模块在 Microsoft Entra ID 中更新已同步用户的 MobilePhone 和 AlternateMobilePhones 值。
如果让用户和管理员能够直接在 Microsoft Entra ID 中更新电话号码,企业可以减少在本地 Active Directory 中管理用户电话号码所产生的管理开销,因为这些电话号码可能频繁更改。
但需要注意的是,一旦通过管理门户或 PowerShell 更新已同步用户的 MobilePhone 或 AlternateMobilePhones 号码,同步 API 将不再遵循对这些属性的更新,如果这些更新源自本地 Active Directory。 此功能通常称为“DirSyncOverrides”。 如果对 Active Directory 中的 Mobile 或 otherMobile 属性所做的更新不会相应地更新 Microsoft Entra ID 中对应用户的 MobilePhone 或 AlternateMobilePhones,则管理员将注意到此行为,但尽管如此,对象已通过 Microsoft Entra Connect 的引擎成功同步。
识别使用不同 Mobile 和 otherMobile 值的用户
可以使用 ADSyncTools PowerShell 模块中的“Compare-ADSyncToolsDirSyncOverrides”,导出在 Active Directory 与 Microsoft Entra ID 之间使用不同 Mobile 和 otherMobile 值的用户的列表。 这样就可以确定在本地 Active Directory 与 Microsoft Entra ID 之间不同的用户和相应值。 知道这一点很重要,因为启用 BypassDirSyncOverridesEnabled 功能会将 Microsoft Entra ID 中的所有不同值覆盖为本地 Active Directory 中的值。
使用 Compare-ADSyncToolsDirSyncOverrides
作为先决条件,需要运行 Microsoft Entra Connect 版本 2 或更高版本,并使用以下命令从 PowerShell 库安装最新的 ADSyncTools 模块:
Install-Module ADSyncTools
若要比较所有已同步用户的 Mobile 和 OtherMobile 值,请运行以下命令:
Compare-ADSyncToolsDirSyncOverrides -Credential $(Get-Credential)
注意
此功能使用的目标 API 不会处理身份验证用户交互。 MFA 或条件策略将阻止身份验证。 当系统提示输入凭据时,请使用未启用 MFA 或未应用任何条件访问策略的全局管理员帐户。 作为终极手段,请创建一个未启用 MFA 或条件访问的临时全局管理员用户帐户,在使用 BypassDirSyncOverridees 功能完成所需操作后,可以删除该帐户。
此功能将导出一个包含用户列表的 CSV 文件,在该列表中,本地 Active Directory 中的 Mobile 或 OtherMobile 值与 Microsoft Entra ID 中的相应 MobilePhone 或 AlternateMobilePhones 不同。
在此阶段,可以使用此数据将本地 Active Directory 的 Mobile 和 otherMobile 属性值重置为 Microsoft Entra ID 中的值。 这样,就可以在启用 BypassDirSyncOverridesEnabled 功能之前,从 Microsoft Entra ID 捕获最新的电话号码并将此数据保存在本地 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,*InAAD
Set-ADSyncToolsDirSyncOverridesUser -Identity $upn -MobileInAD $user.MobileInAAD
启用 BypassDirSyncOverridesEnabled 功能
默认情况下,BypassDirSyncOverridesEnabled 功能处于关闭状态。 启用 BypassDirSyncOverridesEnabled 能让租户绕过用户或管理员直接在 Microsoft Entra ID 中对 MobilePhone 或 AlternateMobilePhones 所做的任何更改,并始终遵循本地 Active Directory 的 Mobile 或 OtherMobile 中的值。
如果你不希望最终用户能够更新其自己的手机号码,或者不要求管理员使用 PowerShell 更新手机号码或备用手机号码,则应在租户上保持启用 BypassDirSyncOverridesEnabled 功能。
打开此功能后,即使最终用户或管理员更新 Microsoft Entra ID 中的 MobilePhone 或 AlternateMobilePhones,从本地 Active Directory 同步的值也会在下一个同步周期保留。 这意味着,仅当在本地 Active Directory 中执行更新然后同步到 Microsoft Entra ID 时,对这些值的任何更新才会保留。
启用 BypassDirSyncOverridesEnabled 功能:
若要启用 BypassDirSyncOverridesEnabled 功能,请使用 Microsoft Graph PowerShell 模块。
$directorySynchronization = Get-MgDirectoryOnPremiseSynchronization
$features = @{BypassDirSyncOverridesEnabled=$true}
Update-MgDirectoryOnPremiseSynchronization -OnPremisesDirectorySynchronizationId $directorySynchronization.Id -Features $features
启用该功能后,使用以下命令在 Microsoft Entra Connect 中启动完整同步周期:
Start-ADSyncSyncCycle -PolicyType Initial
注意
只会更新其 MobilePhone 或 AlternateMobilePhones 值与本地 Active Directory 中的值不同的对象。
验证 BypassDirSyncOverridesEnabled 功能的状态:
(Get-MgDirectoryOnPremiseSynchronization).Features.BypassDirSyncOverridesEnabled
禁用 BypassDirSyncOverridesEnabled 功能
如果你希望还原从门户或 PowerShell 更新手机号码的功能,可使用以下 Microsoft Graph PowerShell 模块命令禁用 BypassDirSyncOverridesEnabled 功能:
$directorySynchronization = Get-MgDirectoryOnPremiseSynchronization
$features = @{BypassDirSyncOverridesEnabled=$false}
Update-MgDirectoryOnPremiseSynchronization -OnPremisesDirectorySynchronizationId $directorySynchronization.Id -Features $features
关闭此功能后,只要用户或管理员直接在 Microsoft Entra ID 中更新 MobilePhone 或 AlternateMobilePhones,就会创建一个 DirSyncOverrides,用于防止将来更新本地 Active Directory 中的这些属性。 从此时起,用户或管理员只能从 Microsoft Entra ID 管理这些属性,因为从本地 Mobile 或 OtherMobile 做出的任何新的更新都将被忽略。
在 Microsoft Entra ID 和本地 Active Directory 中管理手机号码
若要管理用户的电话号码,管理员可以使用 ADSyncTools 模块中的以下函数集来读取、写入和清除 Microsoft Entra ID 或本地 Active Directory 中的值。
从本地 Active Directory 获取 Mobile 和 OtherMobile 属性:
Get-ADSyncToolsDirSyncOverridesUser 'User1@Contoso.com' -FromAD
获取 Microsoft Entra ID 中的 MobilePhone 和 AlternateMobilePhones 属性:
Get-ADSyncToolsDirSyncOverridesUser 'User1@Contoso.com' -FromAzureAD
设置 Microsoft Entra ID 中的 MobilePhone 和 AlternateMobilePhones 属性:
Set-ADSyncToolsDirSyncOverridesUser 'User1@Contoso.com' -MobilePhoneInAAD '999888777' -AlternateMobilePhonesInAAD '0987654','1234567'
在本地 Active Directory 中设置 Mobile 和 otherMobile 属性:
Set-ADSyncToolsDirSyncOverridesUser 'User1@Contoso.com' -MobileInAD '999888777' -OtherMobileInAD '0987654','1234567'
清除 Microsoft Entra ID 中的 MobilePhone 和 AlternateMobilePhones 属性:
Clear-ADSyncToolsDirSyncOverridesUser 'User1@Contoso.com' -MobilePhoneInAAD -AlternateMobilePhonesInAAD
在本地 Active Directory 中清除 Mobile 和 otherMobile 属性:
Clear-ADSyncToolsDirSyncOverridesUser 'User1@Contoso.com' -MobileInAD -OtherMobileInAD