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

Plus d'informations
il y a 2 ans 7 mois #31321 par witness

Afin que je ne te dise pas de sottise je te laisse lire la documentation officiel elle est assez ludique
docs.microsoft.com/fr-fr/powershell/modu...?view=powershell-7.1

Merci, je pense avoir la réponse.

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 #31326 par witness
Hello,

j'ai passé le script sur le DC en exploitation et je rencontre deux erreurs.
Je précise que jusqu'à maintenant, je faisais mes tests sur un DC 2019 alors que le DC sur lequel je dois lancer la création des comptes est 2012R2.
Je ne sais pas si le problème peut venir de la version de powershell mais je commence à me dire que c'est fort probable ?

Voilà ce que j'obtiens:

Impossible d'appeler une méthode dans une expression Null.
Au caractère Ligne:8 : 5
+ $SAM = $givenname.Substring(0,1).ToLower() + $sn.ToLower()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:) , RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

New-ADuser : Le nom fourni n'est pas un nom de compte formé correctement
Au caractère Ligne:37 : 1
+ New-ADuser -displayName $displayName -Path $ou -Description $description -SamAcc ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=TEST\,TEST\,...lorraine,DC=com:String) [New-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:1315,Microsoft.ActiveDirectory.Management.Commands.NewADUser





Voilà le script que j'ai passé:


function Remove-DiacriticsAndSpaces
{
    Param(
        [String]$inputString
    )
    #Remplace les diacritics
    $sb = [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($inputString))

    #Supprime les espaces et tout ce que la fonction ci-dessus a pu manquer
    return($sb -replace '[^a-z0-9]','')
}


$users = import-csv -path "C:\Users\usr-admin\Desktop\Import AD eleves.csv" -delimiter ";"

$AD_SAM = get-ADuser -filter * -SearchBase "Mondomaine" | Select-Object -ExpandProperty SamAccountName

$NewUsers = $users | ForEach-Object {
    $sn = ($_.Nom).ToUpper() -replace '[ ]+',' '
    $givenname = $_.Prenom
    $Classe = $_.Classe
    $identifiant = $_.identifiant
    $ou = "OU=Eleves,DC=Mondomaine"
    $description = 'GCU-ORG$ELEVE$' + $Classe
    $SAM = $givenname.Substring(0,1).ToLower() + $sn.ToLower()

    $SAM = Remove-DiacriticsAndSpaces -inputString $SAM
    $SAM = $SAM.SubString(0, [Math]::Min(19, $SAM.length))

    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.e-lorraine.com"
    $userAccountControl = 66050
    $CannotChangePassword = 1
    $HomeDrive = "U"
    $HomeDirectory = "\\test\test"
    $ProfilePath = "\\server-data\Profils_Eleves\%profil%"
    $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\usr-admin\Desktop\export.csv" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"




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

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

Plus d'informations
il y a 2 ans 7 mois #31327 par ericlm128
Il semblerait que dans ton csv tu as un Prenom vide
Il t'en crée comme même ? Fait du pas à pas sinon pour voir ce qui cloche.
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 #31328 par witness
Yes ça fonctionne.

Mauvais formatage de fichier 

Merci encore pour toute l'aide.

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

Plus d'informations
il y a 2 ans 6 mois - il y a 2 ans 6 mois #31338 par witness
Hello,

J'ai pu faire mon import de tous les comptes en ce début d'année.
Le script fonctionne à la perfection.
Je voulais vous remercier encore pour votre aide.
Ça me permet aussi d'apprendre pas mal de choses.
Je viendrai encore vous embêter sans doute lorsqu'il s'agira de faire évoluer le script de manière à gérer la mise à jour des comptes nouveaux, à modifier et à supprimer.
Dernière édition: il y a 2 ans 6 mois par witness.

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

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