从已迁移的 Microsoft Entra ID 用户清理本地属性

将用户和组迁移到 Microsoft Entra ID 后,可以停用本地 Active Directory 和卸载同步工具。 关闭目录同步后,可以直接在 Microsoft Entra ID 中管理这些对象。

但是,你可能会在 Windows、Intune 和 Outlook 中遇到问题,因为以前从本地同步的用户属性中保留了旧值。 例如,混合设备加入可能会失败,因为系统从这些过时的属性中提取用户名和域名。

为了防止这些问题,我们建议客户清除以下本地属性:

  • onPremisesDistinguishedName
  • onPremisesDomainName
  • onPremisesImmutableId
  • onPremisesSamAccountName
  • onPremisesSecurityIdentifier
  • onPremisesUserPrincipalName

如何更新这些属性

可以使用更新用户 API 调用通过 Microsoft Graph Beta 更新这些属性。 对于本地仅限云的用户或在 Entra ID 中关闭同步后已转换为仅限云的用户的先前同步用户,这些属性只能在 Entra ID 中更新。

必需的角色

可更新本地属性的 Entra ID 角色包括:

所需的权限

所需的应用程序权限为 User.ReadWrite.All。

使用 ADSyncTools PowerShell 模块

还可以使用提供的 PowerShell 脚本查看和更新这些本地属性。

使用 ADSyncTools PowerShell 模块管理本地属性的先决条件:

若要使用 ADSyncTools,需要从 PowerShell 库安装模块,如下所示:

[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 中管理本地属性的最低所需版本为 v1.5.2。

使用以下命令开始使用 ADSyncTools。

Import-Module ADSyncTools 

请参阅可用于管理 OnPremises 属性的 cmdlet:

Get-Command *onpremises* -Module ADSyncTools 

结果:

CommandType   Name                      Version  Source 
-----------   ----                      -------  ------ 
Function    Clear-ADSyncToolsOnPremisesAttribute      1.5.2   ADSyncTools 
Function    Get-ADSyncToolsOnPremisesAttribute       1.5.2   ADSyncTools 
Function    Set-ADSyncToolsOnPremisesAttribute       1.5.2   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.Read.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" 进行预先身份验证)

重要

在清除生产环境中 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" 进行预先身份验证)

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]] [[-onPremisesSamAccountName]] [[-onPremisesSecurityIdentifier]] [[-onPremisesUserPrincipalName]] [<CommonParameters>] 

按 BodyParameter

 Clear-ADSyncToolsOnPremisesAttribute [-Id] <String> [-BodyParameter] <String> [<CommonParameters>] 

按 All

 Clear-ADSyncToolsOnPremisesAttribute [-Id] <String> [-All] [<CommonParameters>] 

示例 1

仅清除 onPremisesImmutableId 属性

 Clear-ADSyncToolsOnPremisesAttribute -Identity '12345678-90ab-cd12-3456-7890abcd1234' -onPremisesImmutableId

示例 2

基于 json 参数正文清除 onpremises 属性 (-BodyParameter)

$jsonBody = @'
{ 
  "onPremisesDistinguishedName": null, 
  "onPremisesDomainName": null, 
  "onPremisesImmutableId": null, 
  "onPremisesSamAccountName": null, 
  "onPremisesSecurityIdentifier": null, 
  "onPremisesUserPrincipalName": null 
} 
'@ 

Clear-ADSyncToolsOnPremisesAttribute -Identity $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" 进行预先身份验证)

重要

在更新生产环境中 Entra ID 用户的本地属性之前,作为安全建议,备份所有用户的本地属性,以防需要回滚操作。

可以使用以下命令备份所有当前值:

Get-ADSyncToolsOnPremisesAttribute | Export-Csv backupOnpremisesAttributes.csv -Delimiter ';' 

此函数可用于设置下面列出的任何本地属性:

  • onPremisesDistinguishedName
  • onPremisesDomainName
  • onPremisesImmutableId
  • 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 参数正文设置 onpremises 属性 (-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 与任何命令来显示函数正在执行的操作的其他详细信息。