Question
Doublons générés lors du traitement import AD
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 2 ans 2 mois - il y a 2 ans 2 mois #31066
par witness
Doublons générés lors du traitement import AD a été créé par witness
Hello,
Je reviens avec mon script d'import des utilisateurs dans AD:
Il fonctionne parfaitement.
Seulement, et il fallait s'en douter, lors de la création en masse, puisque les logins sont composés de la première lettre du prénom + du nom complet, il y a tentative de création de doublons et Active Directory n'aime pas ça.
Du coup, je pense qu'il va falloir que je crée un bloc IF quelque part, afin de lui dire que si, lors du traitement, un login existe déjà, qu'il rajoute un chiffre à la fin.
Seulement la question que je me pose avant de me lancer (j'aurais évidement besoin de votre aide je vous remercie d'avance) c'est de savoir où je dois lui demander de rechercher un doublons.
Dans Active Directory ? Ce qui supposerait que les comptes sont créés au fur et à mesure du traitement du script
Ou bien en mémoire (dans une variable) ? Ce qui supposerait que le résultats du traitement sont chargés en mémoire et appliqués une fois le traitement totalement terminé.
Qu'en pensez vous les experts ?
Merci.
Je reviens avec mon script d'import des utilisateurs dans AD:
$users = import-csv -path "C:\Users\Administrateur\Desktop\importusers.csv" -delimiter ";"
$NewUsers = $users | ForEach-Object {
$sn = $_.Nom
$givenname = $_.Prenom
$Classe = $_.Classe
$identifiant = $_.identifiant
$ou = "OU=importusers,DC=Mondomaine,DC=local"
$description = 'GCU-ORG{$ELEVE}$' + $Classe
$SAM = $givenname.Substring(0,1).ToLower() + $sn.ToLower()
$CN = $sn + " " + $givenname + "[$identifiant]"
$displayName = $CN
$UPN = $SAM + "@Mondomaine.local"
$userAccountControl = 66050
$CannotChangePassword = 1
$HomeDrive = "U"
$HomeDirectory = "\\test\test"
$ProfilePath = "C:\users"
$ScriptLogon = "test"
$Password = '{0}{1}' -f (get-random -Minimum 1000000 -Maximum 9999999), [char](get-random -Minimum 65 -Maximum 90)
$Password = $Password -replace '0',(Get-Random -Minimum 1 -Maximum 9) -replace 'O',[char](get-Random -Minimum 65 -Maximum 78)
$Secure_String_pwd = ConvertTo-SecureString $Password -AsPlainText -Force
$Enabled = 1
New-ADuser -displayName $displayName -Path $ou -Description $description -SamAccountName $SAM -givenname $givenname -Surname $sn -name $displayName -UserPrincipalName $UPN -PasswordNeverExpires $userAccountControl -CannotChangePassword $CannotChangePassword -HomeDrive $HomeDrive -HomeDirectory $HomeDirectory -ProfilePath $ProfilePath -ScriptPath $ScriptLogon -Enabled $Enabled -Accountpassword $Secure_String_pwd
[PSCustomObject]@{
Nom = $sn
Prenom = $givenname
OU = $ou
Description= $description
Login = $SAM
Lettre_lecteur = $HomeDrive
Dossier_personnel = $HomeDirectory
Chemin_profil = $ProfilePath
ScriptLogon = $ScriptLogon
Mot_de_passe = $Password
}
}
$NewUsers | Export-Csv -path "C:\Users\Administrateur\Desktop\export.csv" -Append -NoTypeInformation -Delimiter ";"
Il fonctionne parfaitement.
Seulement, et il fallait s'en douter, lors de la création en masse, puisque les logins sont composés de la première lettre du prénom + du nom complet, il y a tentative de création de doublons et Active Directory n'aime pas ça.
Du coup, je pense qu'il va falloir que je crée un bloc IF quelque part, afin de lui dire que si, lors du traitement, un login existe déjà, qu'il rajoute un chiffre à la fin.
Seulement la question que je me pose avant de me lancer (j'aurais évidement besoin de votre aide je vous remercie d'avance) c'est de savoir où je dois lui demander de rechercher un doublons.
Dans Active Directory ? Ce qui supposerait que les comptes sont créés au fur et à mesure du traitement du script
Ou bien en mémoire (dans une variable) ? Ce qui supposerait que le résultats du traitement sont chargés en mémoire et appliqués une fois le traitement totalement terminé.
Qu'en pensez vous les experts ?
Merci.
Dernière édition: il y a 2 ans 2 mois par witness.
Connexion ou Créer un compte pour participer à la conversation.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 2 ans 2 mois - il y a 2 ans 2 mois #31067
par witness
Réponse de witness sur le sujet Doublons générés lors du traitement import AD
Pour ma condition, je pensais à un quelque chose du genre:
Mais en fait ça ne fait que m'ajouter un chiffre en plus à chaque traitement, et en plus ça démarre de zéro, ce n'est pas ce que je veux, je voudrais qu'il m'ajoute un 1 à la fin du login en doublon, puis un 2 à la place du 1 si il y a encore le même doublon, etc.…
Je pense être bon au niveau de ma condition mais pas de mon instruction
if ($SAM -eq Get-ADUser -SearchBase 'OU=importusers,DC=Mondomaine,DC=local' -filter * | Select-Object SamAccountName)
{
$Sam = $Sam + $i++
}
Mais en fait ça ne fait que m'ajouter un chiffre en plus à chaque traitement, et en plus ça démarre de zéro, ce n'est pas ce que je veux, je voudrais qu'il m'ajoute un 1 à la fin du login en doublon, puis un 2 à la place du 1 si il y a encore le même doublon, etc.…
Je pense être bon au niveau de ma condition mais pas de mon instruction
Dernière édition: il y a 2 ans 2 mois par witness.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6290
- Remerciements reçus 67
il y a 2 ans 2 mois #31069
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Doublons générés lors du traitement import AD
>>où je dois lui demander de rechercher un doublons ?
Via une exception du cmdlet, enfin si tu peux déterminer ce cas. Je n'ai pas d'AD pour tester.
Et pour déterminer le chiffre à ajouter peut-être retrouver toutes les occurrences des comptes AD commençant par le nom dupliqué et rechercher celui qui a le chiffre le plus élevé puis le placer dans un cache ( une hashtable avec le nom et le dernier indice).
Mais là faut étudier le sujet plus précisément ainsi que la volumétrie. Si ton traitement concerne 10 créations dans une AD de 4000 comptes ou 300 dans un AD de 80.000 comptes.
Via une exception du cmdlet, enfin si tu peux déterminer ce cas. Je n'ai pas d'AD pour tester.
Et pour déterminer le chiffre à ajouter peut-être retrouver toutes les occurrences des comptes AD commençant par le nom dupliqué et rechercher celui qui a le chiffre le plus élevé puis le placer dans un cache ( une hashtable avec le nom et le dernier indice).
Mais là faut étudier le sujet plus précisément ainsi que la volumétrie. Si ton traitement concerne 10 créations dans une AD de 4000 comptes ou 300 dans un AD de 80.000 comptes.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 2 ans 2 mois - il y a 2 ans 2 mois #31070
par witness
Réponse de witness sur le sujet Doublons générés lors du traitement import AD
Laurent,
Je vais m'orienter vers ton conseil et chercher à en savoir plus.
J'ai 2500 comptes à créer, je repars de zéro chaque année pour ces comptes là.
L'AD contient donc 300 comptes persistant dans le temps avec quelques création et suppression de temps en temps mais sans grand changement, je le fais manuellement ça d'ailleurs.
Merci
Je vais m'orienter vers ton conseil et chercher à en savoir plus.
J'ai 2500 comptes à créer, je repars de zéro chaque année pour ces comptes là.
L'AD contient donc 300 comptes persistant dans le temps avec quelques création et suppression de temps en temps mais sans grand changement, je le fais manuellement ça d'ailleurs.
Merci
Dernière édition: il y a 2 ans 2 mois par witness.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6290
- Remerciements reçus 67
il y a 2 ans 2 mois #31072
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Doublons générés lors du traitement import AD
Analyse de texte -> regex :
'AccountName255' -match '^.*?(?<Nombre>\d*)$'
$matches.Nombre
#255
$Matches
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6290
- Remerciements reçus 67
il y a 2 ans 2 mois - il y a 2 ans 2 mois #31073
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Doublons générés lors du traitement import AD
Et pour découper/reconstruire
Il faut une autre construction pour ajouter l'incrémentation, je regarderai ça demain.
'AccountName255' -match '^(?<Nom>.*?)(?<Nombre>\d*)$'
Tutoriels PowerShell
Dernière édition: il y a 2 ans 2 mois par Laurent Dardenne. Raison: bug éditeur
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.069 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Doublons générés lors du traitement import AD