我在域控制器上为特定用户运行 setspn 命令。
C:\>setspn -s example/username.companyname.com username
Checking domain DC=companyname,DC=com
Registering ServiceprincipalNames for CN=username,CN=Users,DC=companyname,DC=com
example/username.companyname.com
Updated object
并且可以立即在控制台中看到结果。
C:\>setspn -L username
Registering ServiceprincipalNames for CN=username,CN=Users,DC=companyname,DC=com
example/username.companyname.com
但它永远不会影响“Active Directory 用户和计算机”中的该用户。
他的属性“servicePrincipalName”未设置。
也许存在某种缓存?
答案1
我很确定 setspn unility 不影响“Active Directory 用户和计算机”的原因是它的版本太旧了:6.1。
在我用于测试的虚拟机上,我有版本 10.0 的 setspn,并且它运行完美。
我发现我可以通过 Powershell 更改 SPN。
C:\> $ReplaceHashTable = New-Object Hash-Table
C:\> $ReplaceHashTable.Add("servicePrincipalName", "example/username.companyname.com")
C:\> Set-ADUser -Identity "username" -Replace $ReplaceHashTable
C:\> Get-ADUser -Identity "username" -Properties ServicePrincipalNames
DistinguishedName : CN=username,CN=Users,DC=companyname,DC=com
Enabled : True
Name : username
ObjectClass : user
SamAccountName : username
ServicePrincipalNames : (example/username.companyname.com)
UserPrincipalName : [email protected]
答案2
除了以下缓存外,没有其他缓存:域控制器和站点之间的复制时间。以及 Active Directory 用户和计算机控制台中的内存缓存。
尝试关闭ADUC控制台以强制刷新数据。