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

Plus d'informations
il y a 2 ans 7 mois #31172 par witness
Je précise pour mon précédent message que j'ai réessayé d'exécuter le script en enlevant ces modifications et l'export csv fonctionne.
Ça vient donc bien de ces ajouts.
 

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

Plus d'informations
il y a 2 ans 7 mois #31186 par ericlm128
Me revoila, ceci retourne une valeur
$SAM.SubString(0, [Math]::Min(19, $SAM.length)) -replace '[^a-z A-Z 0-9]+','' -replace '[ ]',''
il faut que tu l'assigne
$SAM = $SAM.SubString(0, [Math]::Min(19, $SAM.length)) -replace '[^a-z A-Z 0-9]+','' -replace '[ ]',''

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

Plus d'informations
il y a 2 ans 7 mois - il y a 2 ans 7 mois #31187 par ericlm128
A noter que cette réduction peut techniquement te poser des problèmes, tu peux retomber dans un cas de doublon

Il faut aussi l'ajouter à $AD_SAM une fois le nom définitif choisi et pas avant
Dernière édition: il y a 2 ans 7 mois par ericlm128.

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

Plus d'informations
il y a 2 ans 7 mois - il y a 2 ans 7 mois #31188 par ericlm128
Je te propose ceci (non testé)
$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 -replace '[^a-z0-9]+', ''
    $givenname = $_.Prenom -replace '[^a-z0-9]+', ''
    $Classe = $_.Classe
    $identifiant = $_.identifiant
    $ou = "OU=importusers,DC=Mondomaine,DC=local"
    $description = 'GCU-ORG{$ELEVE}$' + $Classe
    $SAM = $givenname.Substring(0,1).ToLower() + $sn.ToLower()
    
    $SAM = $SAM -replace '[^a-z A-Z 0-9]+','' -replace '[ ]',''
    if ($AD_SAM -contains $SAM)
    {
        for ($i = 1 ; ; $i++)
        {
            $SAMtmp = $SAM.SubString(0, [Math]::Min(19 - $i.ToString().Length, $SAM.length)) + $i.ToString()

            if ($AD_SAM -notcontains $SAMtmp)
            {
                $SAM = $SAMtmp
                break
            }
        }
    }
    $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 ";"
Dernière édition: il y a 2 ans 7 mois par ericlm128.
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 7 mois #31195 par witness
Hello Eric,

Je vais tester ça et te dirai si je rencontre une difficulté.
Merci

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

Plus d'informations
il y a 2 ans 7 mois #31204 par witness
Hello,

Alors j'ai testé la version précédente, celui où j'ai oublié d'assigner la variable, et ça semble fonctionner.
Je vais aussi tester celui qui tu m'as proposé ci-dessus.
Par contre je me rends compte qu'avec ce script, si j'ai des accents dans les noms ou prénoms, ils vont tout simplement disparaitre et il va donc manquer des lettres du coup.
Pour le login c'est pas gênant car il se base justement sur le nom et prénom, on ne devrait donc pas être embêté.
Ne vaudrait-il pas mieux, au lieu de supprimer les caractères avec le regex, faire un remplacement ?
Autrement dit, si par exemple dans un prénom j'ai un accent, comme pour "Thimoté", dire au script qu'il remplace "é" par e.
Bien sûr il faudrait faire ça pour tous les possibles cas qui pourraient se présenter mais il n'y en pas beaucoup, dans les prénoms on retrouve toujours les mêmes, à savoir: é è ä ê î ï

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

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