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

Plus d'informations
il y a 2 ans 2 mois - il y a 2 ans 2 mois #31137 par witness
Alors j'ai testé un import avec 1900 comptes et les erreurs que j'ai eu ce sont des erreurs de compte qui existent déjà dans une autre OU ou bien des erreurs de nom incorrect.

New-ADuser : Le compte spécifié existe déjà

New-ADuser : Le nom fourni n’est pas un nom de compte formé correctement


Pour les erreurs de nom incorrect c'est normal car il y a des espace ou ils sont trop longs ou ce sont des noms composés

Pour les erreurs de comptes existants, il est vrai que les quelques comptes concernés trouvent le même nom et la même première lettre de prénom dans une autre OU (Je fais mes tests dans un AD en exploitation mais qui ne contient qu'une cinquantaine de comptes).

J'ai lancé avec ce script:





$users = import-csv -path "C:\Users\Administrateur\Desktop\importusers.csv" -delimiter ";"

$AD_SAM = @()

$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()

    
    if ($AD_SAM -contains $SAM)
    {
        for ($i = 1 ; $AD_SAM -contains ($SAM + $i) ; $i++)
        {
        }
        $SAM = $SAM + $i
    }
    $AD_SAM += $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 -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 ";"

Dernière édition: il y a 2 ans 2 mois par witness.

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

Plus d'informations
il y a 2 ans 2 mois - il y a 2 ans 2 mois #31138 par witness


witness57
Quelle message d'erreur ? J'ai loupé un post ?



Ben le message d'erreur qui dit que les comptes existent déjà.

Je récapitule pour que ce soit plus clair.

Lorsque je lance mon script avec les 6 comptes de tests suivants:

Nom;Prenom;Classe;Identifiant
DUPOND;Assia;309;3743
DUPOND;Ambrine;610;7855
LOUIS;Virgile;102;6082
LOUIS;Victor;102;6078
PETIT;Lisa;104;4890
PETIT;Lou;502;4886

sans mettre cette ligne de code en haut du script : $AD_SAM = @()

J'ai le message d'erreur comme quoi les comptes existent déjà et il ne me crée que les 3 comptes, les premiers de la paire à chaque fois.

Par contre, si je mets cette ligne de code, il me crée bien les 6 comptes sans aucun message d'erreur, j'ai testé 2 fois l'import avec cette ligne de code.

Pourtant, dans le premier cas comme dans le deuxième, ces comptes ont bien été supprimés préalablement et le script est lancé dans les mêmes conditions.
Dernière édition: il y a 2 ans 2 mois par witness.

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

Plus d'informations
il y a 2 ans 2 mois #31139 par witness
Je viens de refaire 6 fois l'import de suite avec les 6 comptes de test et j'ai bien l'import qui se fait sans aucun message d'erreur.

Je vais tester en ajoutant l'UPN

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

Plus d'informations
il y a 2 ans 2 mois #31140 par witness
Je confirme que l'import fonctionne bien avec ce script pour des comptes qui ont le même nom et la même première lettre du prénom dans le fichier d'import, que ce soit pour $SAM et pour $UPN:
$users = import-csv -path "C:\Users\Administrateur\Desktop\importusers.csv" -delimiter ";"

$AD_SAM = @()

$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()

    
    if ($AD_SAM -contains $SAM)
    {
        for ($i = 1 ; $AD_SAM -contains ($SAM + $i) ; $i++)
        {
        }
        $SAM = $SAM + $i
    }
    $AD_SAM += $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 ";"

Par contre, si des comptes ayant le même nom et la même première lettre de prénom préexistent dans l'AD, PowerShell me renvoie une erreur en disant que le compte existe déjà, car j'ai utilisé le même script pour mon import des 1900 comptes et j'ai constaté que les comptes en erreur étaient ceux qui avaient le même nom et la même première lettre de prénom parmi tous les comptes préexistants dans le domaine ou la forêt.

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

Plus d'informations
il y a 2 ans 2 mois #31142 par ericlm128
Il n'y a plus qu'a remplacer
$AD_SAM = @()
par
$AD_SAM = get-ADuser -filter * | Select-Object -ExpandProperty SamAccountName

je pense que le -filter * est falcultatif
Les utilisateur(s) suivant ont remercié: witness

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

Plus d'informations
il y a 2 ans 2 mois #31143 par ericlm128
Tes utilisateurs son peut être présent mais dans une autre OU, autant récupérer tout les utilisateurs de l'AD

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

Temps de génération de la page : 0.070 secondes
Propulsé par Kunena