为在 Active Directory 中创建新用户设置默认 UPN 后缀

Ada*_*and 12 active-directory

有没有办法设置默认 UPN 后缀以创建新用户和 Active Directory?

例如,如果我将 corp.mydomain.com 作为我的 AD 域,并且我在域和信任下添加了一个备用 UPN 后缀,即 mydomain.com,是否有任何方法可以在创建新域时将该域设为默认值?用户?

我知道我可以创建一个模板用户,然后当我复制它时,它会有正确的默认后缀,但只是好奇是否有一个隐藏的设置可以控制它。

MDM*_*rra 11

据我所知,这无法完成(埃文的回答在 4 年后仍然是正确的)。

也就是说,我编写了一个脚本,该脚本每隔几个小时就会在多个客户端的任务调度程序中运行一次。它搜索特定的后缀(大多数情况下的默认后缀)并将其切换到另一个。该脚本在我的博客上,但我也会在这里发布:)

Import-Module ActiveDirectory


Get-ADUser -Filter {UserPrincipalName -like "*@ad.example.com"} -SearchBase "OU=SomeUserOu,DC=ad,DC=example,DC=com" |
ForEach-Object {
    $UPN = $_.UserPrincipalName.Replace("ad.example.com","example.com")
    Set-ADUser $_ -UserPrincipalName $UPN
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用ad.example.comUPN 后缀创建的用户将使用example.com后缀进行更新。

  • 随着 O365 和 ADFS SSO 的目录同步要求,UPN 变得越来越重要。你会认为现在已经有一些东西了:) (3认同)

Eva*_*son 9

据我所知,没有记录的机制可以更改 Active Directory 用户和计算机选择的默认 UPN 后缀。我相信该工具是硬连接的,可以为您的林中的“CN=Partitions,CN=Configuration, ...”中指定的域的“crossRef”对象上定义的“canonicalName”属性的第一部分。

AD 用户和计算机恰好是硬连接来执行此操作的。如果您使用其他方式(例如“NET USER ... /add”)创建用户帐户,则不会将 userPrincipalName 属性分配给该帐户。默认的 UPN 后缀实际上只是 AD 用户和计算机中的默认值,而不是目录服务本身的默认值。

您是否应该遇到带有脚本的 Microsoft KB 文章,该文章向您展示了如何以编程方式获取默认 UPN 后缀 ( http://support.microsoft.com/default.aspx?scid=kb;en-us;Q269441 ),请注意脚本中有几个语法错误(第 17 行和第 32 行格式错误,第 32 行的 srrNamingContext 应该是 strNamingContext)。我将在本文末尾包含一个经过小幅改进的固定版本(它向您展示了可能定义了其他 UPN 后缀的各个 OU 的名称)。

我很想得到比我更“知情”的人的纠正,但我没有看到任何方法可以让 AD 用户和计算机采取不同的行动。

' --- Get the naming contexts ----
Set RootDSE = GetObject("LDAP://RootDSE")
strNamingContext = RootDSE.Get("defaultNamingContext")
strConfigContext = RootDSE.Get("configurationNamingContext")

' -- Get the current domain name --
Set oDomain = GetObject("LDAP://" + strNamingContext)
strDomainName = oDomain.Get("name")

Set oPartition = GetObject("LDAP://CN=Partitions," & strConfigContext)

'-- Get the DNS name of the domain --
oDomain.GetInfoEx Array("canonicalName"), 0
strCanonical = oDomain.Get("canonicalName")
strDNSName = Left(strCanonical, Len(strCanonical) - 1) 'clip off "/"

'-- Display the default UPN suffix
wscript.echo strDNSName

'-- Get the defined upnSuffixes --
suffixes = oPartition.GetEx("UPNSuffixes")
For Each upnSuffix In suffixes
  wscript.echo upnSuffix
Next
Set RootDSE = Nothing
Set oDomain =Nothing
Set oPartition = Nothing

' -- Get the upnsuffixes defined on organizational units --
Set ADOconn = CreateObject("ADODB.Connection")
Set ADOcom = CreateObject("ADODB.Command")

ADOconn.Provider = "ADsDSOObject"
bstrADOQueryString = "<LDAP://" + strNamingContext + ">;(objectcategory=organizationalUnit);upnsuffixes,ADsPath;subtree"
wscript.echo bstrADOQueryString 
ADOconn.Open
ADOcom.ActiveConnection = ADOconn

ADOcom.CommandText = bstrADOQueryString
ADOcom.Properties("Page Size") = 99

Set objRS = ADOcom.Execute

While Not objRS.EOF
   If Not IsNull(objRS.Fields("upnSuffixes")) Then
    upnsuffixes = objRS.Fields("upnSuffixes")
    For Each upnsuffix In upnsuffixes
        wscript.echo objRS.Fields("adsPath") & " - Suffix: " & upnsuffix
    Next
   End If

   objRS.MoveNext
Wend

Set objRS = Nothing
Set ADOcom = Nothing
Set ADOconn = Nothing
Run Code Online (Sandbox Code Playgroud)