Voici un script Powershell qui permet d’ajouter dynamiquement des utilisateurs dans une OU « Utilisateurs » d’un annuaire active Directory.
Le fichier contenant les utilisateurs se trouve dans « Documents », et ressemble à ceci :
FirstName;LastName;Username;UserPrincipalName;OUPath
Alexandre;TEST;atest;atest@deploys.local;OU=Utilisateurs,DC=DEPLOYS,DC=LOCAL
Jean;DUPOND;jdupond;jdupond@deploys.local;OU=Utilisateurs,DC=DEPLOYS,DC=LOCAL
Et le script (appelé « CreateUser.ps1 ») :
# Import du module Active Directory pour pouvoir utiliser les cmdlets spécialisées
Import-Module ActiveDirectory
# Définition d'un mot de passe sécurisé qui sera utilisé pour tous les nouveaux utilisateurs
$password = ConvertTo-SecureString "Motdepassetemporaire123" -AsPlainText -Force
# Spécification du chemin vers le fichier CSV contenant les informations des utilisateurs
$CSVFile = "C:\Users\Administrateur\Documents\users.csv"
# Importation des données du fichier CSV en utilisant un point-virgule comme délimiteur
$CSVData = Import-Csv -Path $CSVFile -Delimiter ";" -Encoding UTF8
# Affichage des données importées pour vérification par l'utilisateur du script
Write-Output "Vérification du fichier CSV :"
$CSVData
# Boucle pour traiter chaque ligne (chaque utilisateur) du fichier CSV
Foreach ($User in $CSVData) {
# Attribution des données CSV aux variables pour un usage facile dans le script
$prenom = $User.FirstName
$nom = $User.LastName
$login = $User.Username
$compte = $User.UserPrincipalName
$OUPath = $User.OUPath
# Vérification de l'existence de l'utilisateur dans Active Directory en utilisant son SamAccountName
if (Get-ADUser -Filter "SamAccountName -eq '$login'") {
# Si l'utilisateur existe déjà, un avertissement est généré
Write-Warning "L'utilisateur $login est déjà présent dans l'annuaire"
}
else {
# Si l'utilisateur n'existe pas, il est créé avec les informations fournies
New-ADUser -Name "$nom $prenom" `
-GivenName $prenom `
-Surname $nom `
-SamAccountName $login `
-UserPrincipalName $compte `
-Path $OUPath `
-AccountPassword $password `
-ChangePasswordAtLogon $true `
-Enabled $true
# Un message de confirmation est affiché après la création de chaque utilisateur
Write-Output "Utilisateur ajouté à l'AD : $login"
}
}
Quelques points à noter :
- Le mot de passe par défaut est défini en clair dans le script et converti en une chaîne sécurisée, ce qui n’est pas une pratique recommandée en termes de sécurité. Il serait préférable de demander à l’utilisateur d’entrer le mot de passe lors de l’exécution du script ou d’utiliser une méthode plus sécurisée pour gérer les mots de passe.
- La cmdlet
Import-Csv
est utilisée pour lire les données d’un fichier CSV où les champs sont séparés par des points-virgules (;
), ce qui est courant dans les systèmes où la virgule n’est pas utilisée comme séparateur de liste standard (par exemple, dans certains paramétrages régionaux européens). - La boucle
foreach
parcourt chaque ligne du fichier CSV et tente de créer un nouvel utilisateur avec les données fournies. - La cmdlet
Get-ADUser
avec le filtre-Filter
est utilisée pour vérifier si un utilisateur avec leSamAccountName
spécifié existe déjà dans AD. - Si l’utilisateur n’existe pas, la cmdlet
New-ADUser
est utilisée pour créer l’utilisateur avec les paramètres spécifiés. - L’option
-ChangePasswordAtLogon
est définie sur$true
, ce qui oblige l’utilisateur à changer son mot de passe lors de sa première connexion. - L’attribut
-Enabled
est défini sur$true
, ce qui signifie que le compte sera activé immédiatement après sa création. - Dans PowerShell, le caractère backtick
`
est utilisé comme caractère d’échappement, y compris pour indiquer que la ligne de commande continue sur la ligne suivante. Cela est souvent utilisé pour améliorer la lisibilité des scripts en permettant de séparer des commandes longues sur plusieurs lignes.
Ressources utiles :
https://www.it-connect.fr/chapitres/creer-des-utilisateurs-dans-lad-a-partir-dun-csv/
https://www.alitajran.com/import-ad-users-from-csv-powershell