Question Doublons générés lors du traitement import AD

  • ericlm128
  • Visiteur
  • Visiteur
il y a 4 ans 10 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"

 

Connexion ou Créer un compte pour participer à la conversation.

  • witness57
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 4 ans 10 mois - il y a 4 ans 10 mois #31281 par witness57
Réponse de witness57 sur le sujet Doublons générés lors du traitement import AD
Tu as repris exactement le script ci-dessous ?


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 4 ans 10 mois par witness57.

Connexion ou Créer un compte pour participer à la conversation.

  • witness57
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 4 ans 10 mois - il y a 4 ans 10 mois #31283 par witness57
Réponse de witness57 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:


$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 4 ans 10 mois par witness57.

Connexion ou Créer un compte pour participer à la conversation.

  • witness57
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 4 ans 10 mois #31284 par witness57
Réponse de witness57 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.

Connexion ou Créer un compte pour participer à la conversation.

  • ericlm128
  • Visiteur
  • Visiteur
il y a 4 ans 10 mois #31285 par ericlm128
Réponse de ericlm128 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.
Est-ce un problème normal ?


Non ce n'est pas normal.
Ce n'est pas ça le problème, je pense que tu as du bugué

Connexion ou Créer un compte pour participer à la conversation.

  • ericlm128
  • Visiteur
  • Visiteur
il y a 4 ans 10 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.051 secondes
Propulsé par Kunena