Définir le suffixe UPN par défaut pour créer de nouveaux utilisateurs dans Active Directory

12

Existe-t-il un moyen de définir le suffixe UPN par défaut pour créer de nouveaux utilisateurs dans Active Directory?

Par exemple, si j'ai corp.mydomain.com comme domaine AD et que j'ai ajouté un suffixe UPN alternatif sous Domains and Trusts qui est juste mondomaine.com, existe-t-il un moyen d'avoir ce domaine par défaut lors de la création de nouveaux utilisateurs?

Je sais que je peux simplement créer un utilisateur de modèle, puis quand je le copierai, il aura le bon suffixe par défaut, mais je suis simplement curieux de savoir s'il y avait un paramètre caché qui contrôlerait cela.

Adam Brand
la source

Réponses:

8

Il n'y a aucun mécanisme documenté que je connaisse pour changer le suffixe UPN par défaut qui est choisi par les utilisateurs et les ordinateurs Active Directory. Je crois que l'outil est câblé pour prendre la première partie de l'attribut "canonicalName" défini sur l'objet "crossRef" pour le domaine spécifié dans "CN = Partitions, CN = Configuration, ..." dans votre forêt.

Les utilisateurs et les ordinateurs AD se trouvent être câblés pour ce faire. Si vous créez des comptes d'utilisateurs en utilisant d'autres moyens ("NET USER ... / add", par exemple), aucun attribut userPrincipalName ne sera attribué au compte. Le suffixe UPN par défaut est vraiment juste une valeur par défaut dans AD Users and Computers, pas une valeur par défaut du service d'annuaire lui-même.

Si vous exécutez l'article Microsoft KB contenant un script qui vous montre comment obtenir par programme le suffixe UPN par défaut ( http://support.microsoft.com/default.aspx?scid=kb;en-us;Q269441 ), méfiez-vous que le script contient quelques erreurs de syntaxe (les lignes 17 et 32 ​​sont mal formées et srrNamingContext sur la ligne 32 doit être strNamingContext). Je vais inclure une version fixe avec une amélioration mineure à la fin de ce post (il vous montre les noms des unités d'organisation individuelles où des suffixes UPN supplémentaires peuvent être définis).

J'aimerais être corrigé par quelqu'un de plus "au courant" que moi, mais je ne vois aucun moyen d'amener les utilisateurs et les ordinateurs AD à agir différemment.

' --- 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
Evan Anderson
la source
J'espérais qu'il y avait une entrée de registre ou quelque chose. Je marquerai cela comme correct si personne d'autre ne sonne avec quoi que ce soit dans les prochaines 24h.
Adam Brand
Dans notre cas, nous exécutons un script quotidien qui vérifie l'UPN de chaque utilisateur et s'ils n'ont pas de nom standard, il les change en standard. Ce script examine de nombreux attributs et les corrige si nécessaire.
KAPes
@KAPes: C'est une bonne idée. Sur les sites où plusieurs administrateurs AD délégués créent des comptes d'utilisateurs, j'ai normalement déployé des scripts pour effectuer la plupart des tâches d'approvisionnement. Pourtant, je pouvais voir écrire des requêtes LDAP pour générer "Hé, factice - vous avez mal provisionné!" e-mails (ou, évidemment, pour réparer les choses automatiquement lorsque l'ordinateur a suffisamment d'informations pour le faire automatiquement).
Evan Anderson
La réponse d'Evan est toujours correcte. Certains ont également suggéré de définir l'attribut uPNSuffixes sur l'unité d'organisation. Cela remplacera simplement la liste uPNSuffixes définie sur le domaine mais restera par défaut le canonicalName du domaine.
charleswj81
8

Pour autant que je sache, cela ne peut pas être fait (la réponse d'Evan est toujours vraie 4 ans plus tard).

Cela dit, j'ai écrit un script qui s'exécute dans le planificateur de tâches toutes les quelques heures sur plusieurs clients. Il recherche un suffixe spécifique (par défaut dans la plupart des cas) et le passe à un autre. Le script est sur mon blog mais je le posterai ici aussi :)

Import-Module ActiveDirectory


Get-ADUser -Filter {UserPrincipalName -like "*@ad.example.com"} -SearchBase "OU=SomeUserOu,DC=ad,DC=example,DC=com" |
ForEach-Object {
    $UPN = $_.UserPrincipalName.Replace("ad.example.com","example.com")
    Set-ADUser $_ -UserPrincipalName $UPN
}

Dans ce cas, les utilisateurs créés avec un ad.example.comsuffixe UPN seront mis à jour avec le example.comsuffixe.

MDMarra
la source
J'ai pensé à utiliser les notifications de changement AD pour faire ce genre de chose en temps réel, mais ce serait exagéré.
Evan Anderson
1
UPN devient de plus en plus important avec les exigences O365 et dirsync pour ADFS SSO. On pourrait penser qu'il y aurait quelque chose de cuit maintenant :)
MDMarra
Parfois, je pense que je suis la seule personne à utiliser les produits Microsoft. > smile <Je me prépare à faire ma première implémentation d'Office365 dans les prochaines semaines (complète avec échange hybride sur site / hors site), je vais donc bientôt pouvoir découvrir tout ce plaisir ADFS SSO et DirSync suffisant.
Evan Anderson
Je ne fais pas O365 directement (nous avons quelques collaborateurs en collaboration), mais j'ai fait un travail Intune qui utilise le même locataire Azure AD. J'espère que votre première balade est plus douce que la mienne :)
MDMarra
L'ajout d'une note indiquant que le .Replace est sensible à la casse, donc si UserPrincipalName est "[email protected]", il ne correspondra pas à la chaîne "ad.example.com". Cela peut être d'abord ajouter une méthode .toLower () comme ceci: $ UPN = $ _. UserPrincipalName.toLower (). Replace ("ad.example.com", "example.com")
Chad Rexin
0

Vous pouvez définir les suffixes UPN autorisés en accédant à ADSIEDIT.MSC, vous connecter à la structure d'unité d'organisation, cliquer avec le bouton droit sur l'unité d'organisation (dans la configuration par défaut) et modifier les attributs d'unité d'organisation. L'attribut OU à modifier est UPNSuffixes. Cela n'affecte cependant pas l'UPN par défaut attribué à un utilisateur créé dans cette unité d'organisation. Ajoutez le suffixe UPN souhaité à cette liste. Ensuite, créez un utilisateur de modèle à copier. Cliquez avec le bouton droit sur l'unité d'organisation, créez un nouvel utilisateur à utiliser comme modèle, attribuez le suffixe UPN correct, puis cliquez avec le bouton droit sur l'utilisateur une fois créé et désactivez le compte. Pour créer un nouvel utilisateur, cliquez avec le bouton droit sur l'utilisateur du modèle et copiez. Remplissez les champs sélectionnés et le nouvel utilisateur sera créé avec l'UPN approprié. Créez plusieurs utilisateurs de modèles pour les différents UPNS. Ou, en cas de doute, passez en PowerShell.

Justin Robbins
la source
-3

En fait, vous pouvez exécuter dans le module Active Directory pour Powershell: Set-ADOrganizationalUnit "OU = XXX, DC = Domain, DC = com" -Add @ {upnsuffixes = "@ UPNSuffix.com".

Ou vous pouvez utiliser un "Get-adorganizationalUnit" avec un commutateur -Filter et un tuyau vers un "Set-ADOrganizationalUnit -Add @ {upnsuffixes =" @ UPNSuffix.com "'

J'ai trouvé cela après avoir cherché pendant un bon moment, donc j'espère que cela aide tout le monde.

Herb Huddleston
la source
La question concerne la définition du suffixe par défaut pour l'ajout de nouveaux utilisateurs, et non l'ajout d'un suffixe upn.
austinian
-4

Cet article technique décrit comment ajouter ou supprimer des suffixes UPN dans votre domaine:

http://technet.microsoft.com/en-us/library/cc756018(WS.10).aspx

Il y a aussi une discussion à ce sujet ici:

http://technet.microsoft.com/en-us/library/cc739093(WS.10).aspx

Je ne peux pas en témoigner personnellement car je n'ai jamais eu à le faire, mais une chose me vient à l'esprit. Si vous allez faire cela, vous devrez garder à l'esprit que même si AD fonctionne correctement, il se peut que cela ne soit pas le cas pour les logiciels tiers que vous avez, ce qui peut supposer que le suffixe UPN est toujours le suffixe standard. . Examinez attentivement les conséquences avant d'effectuer le changement, en d'autres termes.

Maximus Minimus
la source
2
Oui, je sais comment ajouter des suffixes UPN. Ma question était de définir le suffixe par défaut pour ajouter de nouveaux utilisateurs.
Adam Brand