Tidak ada mekanisme yang terdokumentasi yang saya ketahui untuk mengubah akhiran UPN default yang dipilih oleh Pengguna dan Komputer Direktori Aktif. Saya percaya bahwa alat ini terprogram untuk mengambil bagian pertama dari atribut "canonicalName" yang didefinisikan pada objek "crossRef" untuk domain yang ditentukan dalam "CN = Partitions, CN = Configuration, ..." di hutan Anda.
Pengguna AD dan Komputer kebetulan terprogram untuk melakukan ini. Jika Anda membuat akun pengguna menggunakan cara lain ("NET USER ... / add", misalnya) maka tidak ada atribut userPrincipalName yang akan ditetapkan ke akun. Akhiran UPN default benar-benar hanya default di AD Users and Computers, bukan default dari layanan direktori itu sendiri.
Jika Anda menemukan artikel Microsoft KB dengan skrip di dalamnya yang menunjukkan kepada Anda cara mendapatkan akhiran UPN secara terprogram ( http://support.microsoft.com/default.aspx?scid=kb;en-us;Q269441 ), berhati-hatilah bahwa skrip memiliki beberapa kesalahan sintaksis di dalamnya (baris 17 dan 32 salah format dan srrNamingContext pada baris 32 harus strNamingContext). Saya akan menyertakan versi tetap dengan perbaikan kecil di akhir posting ini (ini menunjukkan kepada Anda nama-nama OU individu di mana sufiks UPN tambahan mungkin didefinisikan).
Saya ingin dikoreksi oleh seseorang yang lebih "tahu" daripada saya, tetapi saya tidak melihat cara apa pun untuk membuat Pengguna AD dan Komputer bertindak berbeda.
' --- 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