Question
Doublons générés lors du traitement import AD
- ericlm128
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 169
- Remerciements reçus 35
il y a 2 ans 1 mois #31280
par ericlm128
Réponse de ericlm128 sur le sujet Doublons générés lors du traitement import AD
Tu as du bugé car chez moi voici l'export :
"Nom";"Prenom";"OU";"Description";"Login";"Lettre_lecteur";"Dossier_personnel";"Chemin_profil";"ScriptLogon";"Mot_de_passe"
"LOUIS";"Virgile";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis";"U";"\\test\test";"C:\users";"test";"2123774A"
"LOUIS";"Victor";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis1";"U";"\\test\test";"C:\users";"test";"7873244I"
"PETIT";"Lisa";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$104";"lpetit";"U";"\\test\test";"C:\users";"test";"8767888K"
"PETIT";"Lou";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$502";"lpetit1";"U";"\\test\test";"C:\users";"test";"4377797R"
"DUPOND";"Assia";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$309";"adupond";"U";"\\test\test";"C:\users";"test";"6276278S"
"DUPOND";"Ambrine";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$610";"adupond1";"U";"\\test\test";"C:\users";"test";"4567718C"
"LOUIS";"Virgile";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis2";"U";"\\test\test";"C:\users";"test";"8891741K"
"LOUIS";"Victor";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis3";"U";"\\test\test";"C:\users";"test";"3984544M"
"PETIT";"Lisa";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$104";"lpetit2";"U";"\\test\test";"C:\users";"test";"8492392N"
"PETIT";"Lou";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$502";"lpetit3";"U";"\\test\test";"C:\users";"test";"2649835L"
"Petit";"Jean";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$900,9874";"jpetit";"U";"\\test\test";"C:\users";"test";"1778537A"
"Nom";"Prenom";"OU";"Description";"Login";"Lettre_lecteur";"Dossier_personnel";"Chemin_profil";"ScriptLogon";"Mot_de_passe"
"LOUIS";"Virgile";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis";"U";"\\test\test";"C:\users";"test";"2123774A"
"LOUIS";"Victor";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis1";"U";"\\test\test";"C:\users";"test";"7873244I"
"PETIT";"Lisa";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$104";"lpetit";"U";"\\test\test";"C:\users";"test";"8767888K"
"PETIT";"Lou";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$502";"lpetit1";"U";"\\test\test";"C:\users";"test";"4377797R"
"DUPOND";"Assia";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$309";"adupond";"U";"\\test\test";"C:\users";"test";"6276278S"
"DUPOND";"Ambrine";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$610";"adupond1";"U";"\\test\test";"C:\users";"test";"4567718C"
"LOUIS";"Virgile";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis2";"U";"\\test\test";"C:\users";"test";"8891741K"
"LOUIS";"Victor";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis3";"U";"\\test\test";"C:\users";"test";"3984544M"
"PETIT";"Lisa";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$104";"lpetit2";"U";"\\test\test";"C:\users";"test";"8492392N"
"PETIT";"Lou";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$502";"lpetit3";"U";"\\test\test";"C:\users";"test";"2649835L"
"Petit";"Jean";"OU=importusers,DC=indp57,DC=local";"GCU-ORG{$ELEVE}$900,9874";"jpetit";"U";"\\test\test";"C:\users";"test";"1778537A"
Les utilisateur(s) suivant ont remercié: 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 1 mois - il y a 2 ans 1 mois #31281
par witness
Réponse de witness sur le sujet Doublons générés lors du traitement import AD
Tu as repris exactement le script ci-dessous ?
J'ai enlevé le
qui se trouvait derrière $sn et $givenname et pour le $Sam aussi, car ce traitement est déjà présent dans la fonction.
function Remove-DiacriticsAndSpaces
{
Param(
[String]$inputString
)
#replace diacritics
$sb = [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($inputString))
#remove spaces and anything the above function may have missed
return($sb -replace '[^a-z0-9]', '')
}
$users = import-csv -path "C:\Users\Administrateur\Desktop\importusers.csv" -delimiter ";"
$AD_SAM = get-ADuser -filter * -SearchBase "DC=Mondomaine,DC=local" | Select-Object -ExpandProperty SamAccountName
$NewUsers = $users | ForEach-Object {
$sn = $_.Nom
$sn = Remove-DiacriticsAndSpaces -inputString $sn
$givenname = $_.Prenom
$givenname = Remove-DiacriticsAndSpaces -inputString $givenname
$Classe = $_.Classe
$identifiant = $_.identifiant
$ou = "OU=importusers,DC=Mondomaine,DC=local"
$description = 'GCU-ORG{$ELEVE}$' + $Classe
$SAM = $givenname.Substring(0,1).ToLower() + $sn.ToLower()
if ($AD_SAM -contains $SAM)
{
for ($i = 1 ; $AD_SAM -contains ($SAM + $i) ; $i++)
{
}
$SAM = $SAM + $i
}
$AD_SAM += $SAM
$SAM = $SAM.SubString(0, [Math]::Min(19, $SAM.length)) -replace '[ ]',''
$SAM = Remove-DiacriticsAndSpaces -inputString $SAM
$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 ";"
J'ai enlevé le
-replace '[^a-z0-9]+',''
qui se trouvait derrière $sn et $givenname et pour le $Sam aussi, car ce traitement est déjà présent dans la fonction.
Dernière édition: il y a 2 ans 1 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 1 mois - il y a 2 ans 1 mois #31283
par witness
Réponse de witness sur le sujet Doublons générés lors du traitement import AD
C'est bon j'ai trouvé,
En fait, j'ai dû modifier le nom de deux variables.
J'avais ça avant que je trouve:
et j'ai remplacé comme ça:
Est-ce un problème normal ?
Je ne sais pas bien pourquoi cela pose problème, il ne me semble pas qu'une variable qui fasse appel à elle-même soit un problème ?
En fait, j'ai dû modifier le nom de deux variables.
J'avais ça avant que je trouve:
$NewUsers = $users | ForEach-Object {
$sn = $_.Nom
$sn = Remove-DiacriticsAndSpaces -inputString $sn
$givenname = $_.Prenom
$givenname = Remove-DiacriticsAndSpaces -inputString $givenname
et j'ai remplacé comme ça:
$NewUsers = $users | ForEach-Object {
$Nom = $_.Nom
$sn = Remove-DiacriticsAndSpaces -inputString $Nom
$Prenom = $_.Prenom
$givenname = Remove-DiacriticsAndSpaces -inputString $Prenom
Est-ce un problème normal ?
Je ne sais pas bien pourquoi cela pose problème, il ne me semble pas qu'une variable qui fasse appel à elle-même soit un problème ?
Dernière édition: il y a 2 ans 1 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 1 mois #31284
par witness
Réponse de witness sur le sujet Doublons générés lors du traitement import AD
Bon, je viens de tester un import de 2300 users et je n'ai rencontré aucun problème.
Visiblement le script fonctionne parfaitement.
Merci beaucoup aux contributeurs.
Je vais pouvoir faire mon import de début d'année.
L'étape suivante consistera à faire en sorte que le script trie les utilisateurs en fonction du fichier d'import afin de supprimer les sortants, d'ajouter les entrants et de modifier les existants.
Mais j'ai le temps pour ça, une année.
Merci beaucoup encore.
Visiblement le script fonctionne parfaitement.
Merci beaucoup aux contributeurs.
Je vais pouvoir faire mon import de début d'année.
L'étape suivante consistera à faire en sorte que le script trie les utilisateurs en fonction du fichier d'import afin de supprimer les sortants, d'ajouter les entrants et de modifier les existants.
Mais j'ai le temps pour ça, une année.
Merci beaucoup encore.
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 169
- Remerciements reçus 35
il y a 2 ans 1 mois #31285
par ericlm128
Réponse de ericlm128 sur le sujet Doublons générés lors du traitement import AD
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 169
- Remerciements reçus 35
il y a 2 ans 1 mois #31286
par ericlm128
Réponse de ericlm128 sur le sujet Doublons générés lors du traitement import AD
Voici ton script modifié que j'ai utilisé pour tester
function Remove-DiacriticsAndSpaces
{
Param(
[String]$inputString
)
#replace diacritics
$sb = [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($inputString))
#remove spaces and anything the above function may have missed
return($sb -replace '[^a-z0-9]', '')
}
$users = import-csv -path "importusers.csv" -delimiter ";"
$AD_SAM = @()#get-ADuser -filter * -SearchBase "DC=indp57,DC=local" | Select-Object -ExpandProperty SamAccountName
$NewUsers = $users | ForEach-Object {
$sn = $_.Nom
$sn = Remove-DiacriticsAndSpaces -inputString $sn
$givenname = $_.Prenom
$givenname = Remove-DiacriticsAndSpaces -inputString $givenname
$Classe = $_.Classe
$identifiant = $_.identifiant
$ou = "OU=importusers,DC=indp57,DC=local"
$description = 'GCU-ORG{$ELEVE}$' + $Classe
$SAM = $givenname.Substring(0,1).ToLower() + $sn.ToLower()
if ($AD_SAM -contains $SAM)
{
for ($i = 1 ; $AD_SAM -contains ($SAM + $i) ; $i++)
{
}
$SAM = $SAM + $i
}
$AD_SAM += $SAM
$SAM = $SAM.SubString(0, [Math]::Min(19, $SAM.length)) -replace '[ ]',''
$SAM = Remove-DiacriticsAndSpaces -inputString $SAM
$CN = $sn + " " + $givenname + " " + "[$identifiant]"
$displayName = $CN
$UPN = $SAM + "@indp57.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 "export.csv" -Append -NoTypeInformation -Delimiter ";"
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.075 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Doublons générés lors du traitement import AD