ไม่มีกลไกที่ทำเป็นเอกสารที่ฉันรู้ว่าจะเปลี่ยนส่วนต่อท้าย UPN เริ่มต้นที่เลือกโดยผู้ใช้ของไดเรกทอรีที่ใช้งานอยู่และคอมพิวเตอร์ ฉันเชื่อว่าเครื่องมือนี้ใช้สายแบบหนักเพื่อใช้ส่วนแรกของแอตทริบิวต์ "canonicalName" ที่กำหนดไว้ในวัตถุ "crossRef" สำหรับโดเมนที่ระบุใน "CN = พาร์ติชัน CN = การกำหนดค่า ... " ในฟอเรสต์ของคุณ
ผู้ใช้ AD และคอมพิวเตอร์เพิ่งจะมีสายแข็งในการทำเช่นนี้ หากคุณสร้างบัญชีผู้ใช้โดยใช้วิธีการอื่น ("NET USER ... / add" เป็นต้น) จะไม่มีการกำหนดแอตทริบิวต์ userPrincipalName ให้กับบัญชี ส่วนต่อท้าย UPN เริ่มต้นเป็นเพียงค่าเริ่มต้นในผู้ใช้ AD และคอมพิวเตอร์ไม่ใช่ค่าเริ่มต้นของบริการไดเรกทอรี
หากคุณพบบทความ Microsoft KB ที่มีสคริปต์อยู่ในนั้นจะแสดงวิธีรับโปรแกรมต่อท้าย UPN เริ่มต้นโดยทางโปรแกรม ( http://support.microsoft.com/default.aspx?scid=kb;en-us;Q269441 ) ระวังว่าสคริปต์มีข้อผิดพลาดทางไวยากรณ์อยู่สองสามข้อ (บรรทัดที่ 17 และ 32 มีรูปแบบไม่ถูกต้องและ srrNamingContext บนบรรทัดที่ 32 ควรเป็น strNamingContext) ฉันจะรวมเวอร์ชันที่แก้ไขแล้วพร้อมการปรับปรุงเล็กน้อยในตอนท้ายของโพสต์นี้ (มันจะแสดงชื่อของแต่ละ OU ที่อาจมีการกำหนดส่วนต่อท้าย 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