在 Active Directory 中配置 UserPrincipalName 和 UPN 后缀
在本文中,我们将了解 Active Directory 中的 UPN (UserPrincipalName) 后缀是什么、如何在 AD 林中添加备用后缀,以及如何使用 ADUC 控制台和 PowerShell 更改 Active Directory 用户的 UPN 后缀。
UserPrincipalName (UPN) 是电子邮件地址格式的用户登录名,例如,
maxb@contoso.com。 UPN 名称不一定必须与用户的电子邮件地址匹配。在这种情况下,
maxb是 Active Directory 域中的用户名(用户登录名),
contoso.com是 UPN 后缀。他们有一个分隔符
@
它们之间。
默认情况下,AD 域的 DNS 名称用作 Active Directory 中的 UPN 后缀。例如,a-d.local 域中的 UserPrincipalName 如下所示:
username@a-d.local。
请勿将 UserPrincipalName 与 sAMAccountName 混合使用,sAMAccountName 是旧时代保留的旧 AD 属性。
如果您的内部 AD DS 使用不可路由的域名(例如 mydomain.loc),您将无法验证 Azure (Microsoft 365) 中的域。要配置与 Azure 的同步,您必须重命名您的 AD 域(并不总是可行)或(更容易)向您的 AD 添加额外(备用)UPN 后缀。
如何在 Active Directory 中添加备用 UPN 后缀?
在 Active Directory 中,您可以使用 Active Directory 域和信任图形控制台或 PowerShell 添加其他(备用)UPN 后缀。
打开 PowerShell 控制台并从 AD PowerShell 模块运行 Get-ADForest 命令。以下命令将列出林中所有分配的 UPN 后缀:
Get-ADForest | Format-List UPNSuffixes如果列表为空,则意味着您正在使用与您的 DNS 域名匹配的默认 UPN 后缀。
添加备用 UPN 后缀(例如,
a-d.site),运行此命令:
Get-ADForest | Set-ADForest -UPNSuffixes @{add="a-d.site"}
确保后缀出现在 UPNSuffixes 中:
Get-ADForest | Format-List UPNSuffixes您可以添加多个唯一的 UPN 后缀。通常,如果您的域中有来自不同组织(品牌)的用户并且您希望为他们使用不同的 UPN 后缀,则值得这样做。
您还可以使用 Active Directory 域和信任控制台添加 UPN 后缀;
跑过
domain.msc管理单元;
打开Active Directory 域和信任属性;
将新后缀添加到备用 UPN 后缀框中,然后单击添加。
更改 Active Directory 中的用户主体名称 (UPN)
您可以使用 Get-ADUser cmdlet 显示 UserPrincipalName 属性的当前值:
Get-ADUser f.martusciello -properties select userprincipalname
您可以更改 AD 用户的 UPN 后缀。最简单的方法是在 ADUC 控制台的用户属性中更改 UserPrincipalName (
dsa.msc)。
如您所见,该域的所有 UPN 后缀都在列表中可用。选择您想要的一项,然后单击“确定”。
请注意,此形式的 UserPrincipalName 由两部分组成:用户名和 UPN 后缀。事实上,UserPrincipalName 值存储单个 AD 属性。
当您想要一次更改多个用户的 UPN 时,可以在 ADUC 控制台中选择用户,然后单击属性。转到帐户选项卡并更改所有选定用户的 UPN 后缀。 (如果您希望将不同 OU 的用户放入平面列表中,请使用 ADUC 控制台中保存的查询。)
但使用PowerShell更改用户UPN后缀更容易。
要更改用户的 UPN 后缀,请使用带有 UserPrincipalName 参数的 Set-ADUser cmdlet:
Set-ADUser f.martusciello -UserPrincipalName f.martusciello@a-d.site以下 PowerShell 脚本允许在 OU 中查找具有特定 UPN 后缀的用户,并将 UserPrincipalName 更改为新的。
Get-ADUser -Filter {UserPrincipalName -like "*@mydomain.loc"} -SearchBase " OU=Users,OU=Munich,DC=mydomain,DC=loc" |
ForEach-Object {
$UPN = $_.UserPrincipalName.Replace("mydomain.loc","a-d.site")
Set-ADUser $_ -UserPrincipalName $UPN -verbose
}此 PowerShell 命令允许查找未设置 UserPrincipalName 的用户:
Get-ADUser -LDAPFilter "(!(userPrincipalName=*))" | Select distinguishedNameMicrosoft 建议在通过 Azure AD Connect 同步到 Azure 之前使用 IdFix 工具验证本地 Active Directory。这可以帮助识别用户属性(包括 UserPrincipalName)的不同问题。
如果您创建新用户,则可以选择备用 UPN 后缀而不是域的 DNS 名称。
如果使用 New-ADUser PowerShell cmdlet 创建用户,请使用 UserPrincipalName 开关指定新的 UPN 后缀:
New-ADUser -Name "Jan Kraus" -GivenName "Jan" -Surname "Kraus" -SamAccountName "j.kraus" -UserPrincipalName j.kraus@a-d.site如今,如果您要配置与 Azure AD、Microsoft 365、Intune 的本地 Active Directory 同步,则会出现 UPN 后缀问题。 UserPrincipalName 是 Azure 中的唯一用户标识符。
从历史上看,许多公司一直在使用不可路由或不存在的 DNS 名称(例如
*.loc,
*.local)为其内部 AD 域。
必须为每个要同步到 Azure 的 AD 用户分配一个唯一且可通过 Internet 路由的 userPrincipalName,该用户主体名称与 Azure 租户 (Microsoft 365) 的域相匹配。






