有没有办法设置默认 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后缀进行更新。
据我所知,没有记录的机制可以更改 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)
| 归档时间: |
|
| 查看次数: |
55493 次 |
| 最近记录: |