Es gibt keinen dokumentierten Mechanismus, mit dem ich das standardmäßige UPN-Suffix ändern kann, das von Active Directory-Benutzern und -Computern ausgewählt wird. Ich glaube, dass das Tool fest verdrahtet ist, um den ersten Teil des Attributs "canonicalName" zu übernehmen, das im Objekt "crossRef" für die in "CN = Partitions, CN = Configuration, ..." angegebene Domäne in Ihrer Gesamtstruktur definiert ist.
AD-Benutzer und -Computer sind zu diesem Zweck einfach nur fest verdrahtet. Wenn Sie Benutzerkonten auf andere Weise erstellen (z. B. "NET USER ... / add"), wird dem Konto kein userPrincipalName-Attribut zugewiesen. Das standardmäßige UPN-Suffix ist eigentlich nur ein Standard in AD Users and Computers, kein Standard des Verzeichnisdienstes.
Sollte der Microsoft-KB-Artikel mit einem Skript angezeigt werden, das Ihnen zeigt, wie Sie das standardmäßige UPN-Suffix programmgesteuert abrufen ( http://support.microsoft.com/default.aspx?scid=kb;en-us;Q269441 ), Beachten Sie, dass das Skript einige Syntaxfehler enthält (Zeilen 17 und 32 sind fehlerhaft und srrNamingContext in Zeile 32 sollte strNamingContext lauten). Ich werde eine feste Version mit einer geringfügigen Verbesserung am Ende dieses Beitrags einfügen (sie zeigt Ihnen die Namen der einzelnen Organisationseinheiten, in denen zusätzliche UPN-Suffixe definiert werden könnten).
Ich würde gerne von jemandem korrigiert werden, der sich besser auskennt als ich, aber ich sehe keine Möglichkeit, AD-Benutzer und -Computer dazu zu bringen, sich anders zu verhalten.
' --- 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