कोई प्रलेखित तंत्र नहीं है कि मैं सक्रिय निर्देशिका उपयोगकर्ता और कंप्यूटर द्वारा चुने गए डिफ़ॉल्ट यूपीएन प्रत्यय को बदलने के लिए अवगत हूं। मेरा मानना है कि आपके जंगल में "CN = विभाजन, CN = कॉन्फ़िगरेशन, ..." में निर्दिष्ट डोमेन के लिए "क्रॉसऑरेफ" ऑब्जेक्ट पर परिभाषित "कैनोनिकलनाम" विशेषता के पहले भाग को लेने के लिए उपकरण को हार्ड-वायर्ड किया गया है।
AD उपयोगकर्ता और कंप्यूटर बस ऐसा करने के लिए हार्ड-वायर्ड होते हैं। यदि आप अन्य साधनों का उपयोग करके उपयोगकर्ता खाते बनाते हैं (उदाहरण के लिए "नेट USER ... / जोड़ें"), तो कोई भी उपयोगकर्ताप्रिनिंपलनाम विशेषता खाते में नहीं दी जाएगी। डिफ़ॉल्ट UPN प्रत्यय वास्तव में AD उपयोगकर्ताओं और कंप्यूटर में केवल एक डिफ़ॉल्ट है, न कि स्वयं निर्देशिका सेवा का डिफ़ॉल्ट।
क्या आपको Microsoft KB आलेख में एक स्क्रिप्ट के साथ चलना चाहिए जो आपको दिखाता है कि कैसे प्रोग्राम को डिफ़ॉल्ट रूप से UPN प्रत्यय प्राप्त करना है ( http://support.microsoft.com/default.aspx?scid=kb=en-us-Q269441 ); सावधान रहें कि स्क्रिप्ट में कुछ सिंटैक्स त्रुटियां हैं (लाइनें 17 और 32 विकृत हैं और पंक्ति 32 पर srrNamingContext strNamingContext होना चाहिए)। मैं इस पोस्ट के अंत में एक मामूली सुधार के साथ एक निश्चित संस्करण शामिल करूंगा (यह आपको अलग-अलग ओयू के नाम दिखाता है जहां अतिरिक्त यूपीएन प्रत्ययों को परिभाषित किया जा सकता है)।
मुझे मेरे मुकाबले किसी और से "पता" में सही होना पसंद होगा, लेकिन मैं विज्ञापन उपयोगकर्ताओं और कंप्यूटरों को अलग तरह से काम करने का कोई तरीका नहीं देख रहा हूं।
' --- 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