将用户和组迁移到Microsoft Entra ID后,你可能已准备好停用本地 Active Directory并卸载同步工具。 关闭目录同步后,可以直接在 Microsoft Entra ID 中管理这些对象。
但是,你可能会在 Windows、Intune 和 Outlook 中遇到问题,因为以前从本地同步的用户属性中保留了旧值。 例如,混合设备加入可能会失败,因为系统从这些过时的属性中提取用户名和域名。
为了防止这些问题,我们建议客户清除以下本地属性:
onPremisesDistinguishedName
onPremisesDomainName (本地域名)
onPremisesImmutableId
本地对象标识符
onPremisesSamAccountName
onPremisesSecurityIdentifier(本地安全标识符)
onPremisesUserPrincipalName
如何更新这些属性
可以使用更新用户 API 调用通过 Microsoft Graph Beta 更新这些属性。 只能在 Microsoft Entra ID 中为仅限云的用户更新这些属性。 这包括以前已同步和后来在租户同步被禁用时转换为“仅限云”的用户。
必需的角色
可更新本地属性的 Entra ID 角色包括:
所需的权限
所需的应用程序权限是 User.ReadWrite.All 和 User-OnPremisesSyncBehavior.ReadWrite.All (后者是特定于 onPremisesObjectIdentifier 属性所必需的)。
使用 ADSyncTools PowerShell 模块
还可以使用提供的 PowerShell 脚本查看和更新这些本地属性。
使用 ADSyncTools PowerShell 模块管理本地属性的先决条件:
从 PowerShell 库 安装 ADSyncTools 模块:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-Module ADSyncTools # If ADSyncTools isn’t installed, or;
Update-Module ADSyncTools # If ADSyncTools is already installed
注意
Entra ID中管理本地属性所需的最低版本为 v2.5.0。
使用以下命令开始使用 ADSyncTools。
Import-Module ADSyncTools
请参阅可用于管理本地属性的 cmdlet:
Get-Command *onpremises* -Module ADSyncTools
结果:
CommandType Name Version Source
----------- ---- ------- ------
Function Clear-ADSyncToolsOnPremisesAttribute 2.5.0 ADSyncTools
Function Get-ADSyncToolsOnPremisesAttribute 2.5.0 ADSyncTools
Function Set-ADSyncToolsOnPremisesAttribute 2.5.0 ADSyncTools
使用 Get-Help <cmdlet> -Full 获取有关 cmdlet 的所有详细信息(例如语法和示例):
Get-Help Get-ADSyncToolsOnPremisesAttribute -Full
Get-ADSyncToolsOnPremisesAttribute
说明
获取具有本地属性的特定用户或所有用户,这些属性存在于 Entra ID 中。 它仅返回填充了本地属性的用户。 默认情况下,它返回所有仅限云的用户,但你可以指定 -IncludeSyncedUsers 以返回所有用户,包括从本地 AD 同步的用户。
此操作需要 Microsoft Graph PowerShell SDK(使用 Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "User.ReadWrite.All, User-OnPremisesSyncBehavior.ReadWrite.All" 进行预先身份验证)
SYNTAX
按身份
Get-ADSyncToolsOnPremisesAttribute [-Identity] <String> [[-Property] <String[]>] [<CommonParameters>]
按 IncludeSyncedUsers
Get-ADSyncToolsOnPremisesAttribute [[-IncludeSyncedUsers]] [[-Property] <String[]>] [<CommonParameters>]
示例
示例 1
获取拥有本地部署属性的所有云用户的本地部署属性。
Get-ADSyncToolsOnPremisesAttribute
清除所有用户的所有本地属性
若要批量清除所有用户的所有本地属性,请使用 get 函数检索包含本地属性的所有仅限云的用户的列表,然后将结果传送到“清除”cmdlet,以添加参数 -All。
此操作需要 Microsoft Graph PowerShell SDK(使用 Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "User.ReadWrite.All, User-OnPremisesSyncBehavior.ReadWrite.All" 进行预先身份验证)
重要
在从生产环境中的 Entra ID 用户清除本地属性信息之前,请备份用户的这些本地属性信息,以便在需要时可以回滚操作。
可以使用以下命令备份所有当前值:
Get-ADSyncToolsOnPremisesAttribute | Export-Csv backupOnpremisesAttributes.csv -Delimiter ';'
若要清除所有用户的所有本地属性,请运行:
Get-ADSyncToolsOnPremisesAttribute | Select-Object id | Clear-ADSyncToolsOnPremisesAttribute -All -Verbose
清除一个用户的所有本地属性
若要清除一个特定用户的所有本地属性,请指定 objectId 或 UserPrincipalName,然后指定参数 -All。
此操作需要 Microsoft Graph PowerShell SDK(使用 Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "User.ReadWrite.All, User-OnPremisesSyncBehavior.ReadWrite.All" 进行预先身份验证)
Clear-ADSyncToolsOnPremisesAttribute 'User1@Contoso.com' -All
还可以使用 Clear-ADSyncToolsOnPremisesAttribute 单独清除以下任何本地属性:
onPremisesDistinguishedName
onPremisesDomainName (本地域名)
onPremisesImmutableId
本地对象标识符
onPremisesSamAccountName
onPremisesSecurityIdentifier(本地安全标识符)
onPremisesUserPrincipalName
Clear-ADSyncToolsOnPremisesAttribute
说明
清除 Entra ID 中特定仅限云的用户或所有仅限云的用户的本地属性。
SYNTAX
Clear-ADSyncToolsOnPremisesAttribute [-Id] <String> [[-onPremisesDistinguishedName]] [[-onPremisesDomainName]] [[-onPremisesImmutableId]]
[[-onPremisesObjectIdentifier]] [[-onPremisesSamAccountName]] [[-onPremisesSecurityIdentifier]] [[-onPremisesUserPrincipalName]] [<CommonParameters>]
按 BodyParameter
Clear-ADSyncToolsOnPremisesAttribute [-Id] <String> [-BodyParameter] <String> [<CommonParameters>]
按全部
Clear-ADSyncToolsOnPremisesAttribute [-Id] <String> [-All] [<CommonParameters>]
示例 1
清除 onPremisesImmutableId 属性即可
Clear-ADSyncToolsOnPremisesAttribute -Id '12345678-90ab-cd12-3456-7890abcd1234' -onPremisesImmutableId
示例 2
根据 json 参数正文清除本地属性(-BodyParameter)
$jsonBody = @'
{
"onPremisesDistinguishedName": null,
"onPremisesDomainName": null,
"onPremisesImmutableId": null,
"onPremisesObjectIdentifier": null,
"onPremisesSamAccountName": null,
"onPremisesSecurityIdentifier": null,
"onPremisesUserPrincipalName": null
}
'@
Clear-ADSyncToolsOnPremisesAttribute -Id $userId -BodyParameter $jsonBody
Set-ADSyncToolsOnPremisesAttribute
在 Entra ID 中为仅限云的用户设置本地属性。
此操作需要 Microsoft Graph PowerShell SDK(使用 Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "User.ReadWrite.All, User-OnPremisesSyncBehavior.ReadWrite.All" 进行预先身份验证)
重要
在对生产环境中的 Entra ID 用户更新本地属性之前,请备份这些用户的本地属性,以便在需要时回滚操作。
可以使用以下命令备份所有当前值:
Get-ADSyncToolsOnPremisesAttribute | Export-Csv backupOnpremisesAttributes.csv -Delimiter ';'
此函数可用于设置以下任何本地属性:
onPremisesDistinguishedName
onPremisesDomainName (本地域名)
onPremisesImmutableId
onPremisesObjectIdentifier *
sonPremisesSamAccountName
onPremisesSecurityIdentifier **
onPremisesUserPrincipalName
* 系统生成的属性。 支持清除它,但设置特定值可能会失败,具体取决于服务行为。
** 必须具有正确的安全标识符格式,例如:“S-1-5-21-1234567890-0987654321-1234567890-1111”
SYNTAX
Set-ADSyncToolsOnPremisesAttribute [-Identity] <String> [[-onPremisesDistinguishedName] <String>] [[-onPremisesDomainName] <String>] [[-onPremisesImmutableId] <String>] [[-onPremisesSamAccountName] <String>] [[-onPremisesSecurityIdentifier] <String>] [[-onPremisesUserPrincipalName] <String>] [<CommonParameters>]
按 BodyParameter
Set-ADSyncToolsOnPremisesAttribute [-Identity] <String> [-BodyParameter] <String> [<CommonParameters>]
示例
示例 1
仅设置 onPremisesImmutableId(管道传送)
'User1@Contoso.com' | Set-ADSyncToolsOnPremisesAttribute -onPremisesImmutableId 'nofCJe0gZk6D8J4gRgrt+A=='
示例 2
基于 json 参数正文设置本地属性(-BodyParameter)
$jsonBody = @'
{
"onPremisesDistinguishedName": "User1@Contoso.com",
"onPremisesDomainName": 'Contoso.com',
"onPremisesImmutableId": 'nofCJe0gZk6D8J4gRgrt+A==',
"onPremisesSamAccountName": 'User1',
"onPremisesSecurityIdentifier": "S-1-5-21-4097605469-3104078553-1111111111-1111",
"onPremisesUserPrincipalName": "User1@Contoso.com"
}
'@
Set-ADSyncToolsOnPremisesAttribute -Identity '98765432-6f08-40b2-8b66-123456789012' -BodyParameter $jsonBody
注意
可以结合使用 -Verbose 与任何命令来显示函数正在执行的操作的其他详细信息。