Se rendre au contenu

Créer des utilisateurs Active Directory à partir d’un CSV via PowerShell

Créer le fichier CSV

Nous devons déjà créer le tableau avec les informations de nos utilisateurs. Les en-têtes sont importantes, car elles seront reliées à notre script PowerShell.

Name

ID

Service

Groupe

Marie Dupont

marie.dupont

Direction

GRP_Direction

Claire Martin

claire.martin

RH

GRP_RH

Julien Robert

julien.robert

Informatique

GRP_IT

Nicolas Dubois

nicolas.dubois

Commercial

GRP_Commercial

Camille Renaud

camille.renaud

Support

GRP_Support

Une fois notre tableau finalisé, nous l'exportons au format CSV. Si nous ouvrons le fichier CSV avec un éditeur de texte, nous obtiendrons ce résultat.

Si votre fichier doit contenir des accents, veillez à l'exporter en CSV UTF-8.

Name;ID;Service;Groupe
Marie Dupont;marie.dupont;Direction;GRP_Direction
Claire Martin;claire.martin;RH;GRP_RH
Julien Robert;julien.robert;Informatique;GRP_IT
Nicolas Dubois;nicolas.dubois;Commercial;GRP_Commercial
Camille Renaud;camille.renaud;Support;GRP_Support
Lien de téléchargement de mon fichier complet. 

Script PowerShell

Le script va créer les utilisateurs et les ranger dans les bonnes OUs référencées dans la catégorie Service. Il va aussi les ajouter aux groupes référencés dans la catégorie Groupe.

Le script ne crée pas les OUs et les groupes. Assurez-vous de les avoir créés.

# Définition du chemin du fichier CSV contenant les informations des utilisateurs

$CSVFile = "C:\Scripts\utilisateurs.csv"

# Importation des données du fichier CSV

# Le fichier est délimité par des points-virgules et encodé en UTF-8

$CSVData = Import-CSV -Path $CSVFile -Delimiter ";" -Encoding UTF8

# Parcours de chaque utilisateur dans les données importées

Foreach($Utilisateur in $CSVData){

    # Extraction des différentes catégories du CSV

    $UtilisateurOU = $Utilisateur.Service

    $UtilisateurName = $Utilisateur.Name

    $UtilisateurLogin = $Utilisateur.ID

    $UtilisateurGroupe = $Utilisateur.Groupe

    # création de l'adresse du compte, modifiez le nom domaine pour faire correspondre

    $UtilisateurEmail = "$UtilisateurLogin@morgan-informatique.local"

    # le mot de passe par défault des utilisateurs

    $UtilisateurMotDePasse = "user"

    # Vérifier la présence de l'utilisateur dans l'AD

    if (Get-ADUser -Filter {SamAccountName -eq $UtilisateurLogin})

    {

        Write-Warning "L'identifiant $UtilisateurLogin existe déjà dans l'AD"

    }

    else

    {

        # création de l'utilisateur

        New-ADUser -Name $Utilisateur.Name `

                    -DisplayName $Utilisateur.Name `

                    -SamAccountName $UtilisateurLogin `

                    -UserPrincipalName $UtilisateurEmail `

                    -EmailAddress $UtilisateurEmail `

                    -Path "OU=$UtilisateurOU,OU=Utilisateurs,DC=morgan-informatique,DC=local" ` # modifiez le chemin pour faire correspondre

                    -AccountPassword(ConvertTo-SecureString $UtilisateurMotDePasse -AsPlainText -Force) `

                    -ChangePasswordAtLogon $False ` # passez en true si vous voulez que les utilisateurs doivent changer de mot de passe pour leur première connexion

                    -Enabled $true

        # ajout au groupe correspondant

        Add-AdGroupMember -Identity $UtilisateurGroupe -Members $UtilisateurLogin

        Write-Output "Création de l'utilisateur : $UtilisateurLogin $UtilisateurName"

    }

}

Lien de téléchargement du script