Мне не известен документированный механизм изменения суффикса UPN по умолчанию, который выбирают пользователи и компьютеры Active Directory. Я полагаю, что этот инструмент жестко привязан к первой части атрибута «canonicalName», определенной в объекте «crossRef» для домена, указанного в «CN = Partitions, CN = Configuration, ...» в вашем лесу.
Пользователи и компьютеры AD просто оказались зашитыми для этого. Если вы создаете учетные записи пользователей с помощью других средств (например, «NET USER ... / add»), то для учетной записи не будет назначен атрибут userPrincipalName. Суффикс UPN по умолчанию - это просто значение по умолчанию в AD Users and Computers, а не значение по умолчанию для самой службы каталогов.
Если вы столкнетесь со статьей Microsoft KB со скриптом, в котором показано, как программно получить суффикс UPN по умолчанию ( http://support.microsoft.com/default.aspx?scid=kb;en-us;Q269441 ), имейте в виду, что в скрипте есть пара синтаксических ошибок (строки 17 и 32 искажены, а srrNamingContext в строке 32 должен быть strNamingContext). Я включу исправленную версию с небольшим улучшением в конце этого поста (она показывает имена отдельных подразделений, в которых могут быть определены дополнительные суффиксы UPN).
Я бы хотел, чтобы кто-то более «в курсе» меня исправил, но я не вижу способа заставить пользователей 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
Это не может быть сделано, насколько я знаю (ответ Эвана остается верным 4 года спустя).
Тем не менее, я написал скрипт, который запускается в планировщике задач каждые несколько часов на нескольких клиентах. Он ищет определенный суффикс (по умолчанию в большинстве случаев) и переключает его на другой. Сценарий есть в моем блоге, но я также опубликую его здесь :)
В этом случае пользователи, созданные с
ad.example.com
суффиксом UPN, будут обновленыexample.com
суффиксом.источник
Вы можете установить разрешенные суффиксы UPN, зайдя в ADSIEDIT.MSC, подключившись к структуре OU, щелкните правой кнопкой мыши OU (в конфигурации по умолчанию) и отредактируйте атрибуты OU. Атрибут OU для редактирования - UPNSuffixes. Однако это не влияет на UPN по умолчанию, назначенный пользователю, созданному в этом OU. Добавьте нужный суффикс UPN в этот список. Далее создайте шаблон пользователя для копирования. Щелкните правой кнопкой мыши подразделение, создайте нового пользователя для использования в качестве шаблона, назначьте правильный суффикс UPN, а затем щелкните правой кнопкой мыши созданного пользователя и отключите учетную запись. Чтобы создать нового пользователя, щелкните правой кнопкой мыши шаблон пользователя и скопируйте. Заполните выбранные поля, и новый пользователь будет создан с соответствующим именем участника-пользователя. Создайте несколько пользователей шаблона для разных UPNS. Или, если сомневаетесь, переключитесь на powershell.
источник
На самом деле вы можете запустить модуль Active Directory для Powershell: Set-ADOrganizationalUnit "OU = XXX, DC = Домен, DC = com" -Add @ {upnsuffixes = "@ UPNSuffix.com".
Или вы можете использовать Get-adorganizationalUnit с переключателем -Filter и направить его в Set-ADOrganizationalUnit -Add @ {upnsuffixes = "@ UPNSuffix.com" '
Я нашел это после долгих поисков, поэтому надеюсь, что это кому-нибудь поможет.
источник
Эта техническая статья описывает, как добавить или удалить суффиксы UPN в вашем домене:
http://technet.microsoft.com/en-us/library/cc756018(WS.10).aspx
Здесь также обсуждается это:
http://technet.microsoft.com/en-us/library/cc739093(WS.10).aspx
Я не могу ручаться за это лично, поскольку мне никогда не приходилось делать это, но одна вещь приходит на ум. Если вы собираетесь это сделать, вам следует иметь в виду, что хотя AD будет работать правильно, это может быть не так для любого программного обеспечения сторонних производителей, которое может предполагать, что суффикс UPN всегда является стандартным. , Другими словами, тщательно продумайте последствия, прежде чем вносить изменения.
источник