Script PowerShell-CSV : Créer tous les utilisateurs à partir d'un fichier .csv
1er Script simple, sans gestion des doublons :
Voici le script pour créer automatiquement les utilisateurs dans l'AD en fonction des informations contenues dans le fichier tartempion.csv
Pour ce 1er script, tartempion.csv contient :
Nom;Prenom;OU
Versaire;Annie;GESTION
Peuplu;Jean;GESTION
Le domaine est .INFO
Le script :
# On crée une première variable qui va contenir le fichier .csv
$contenu_csv=Import-Csv -path "C:\Users\Administrateur\Desktop\tartenpion.txt" -Delimiter ";"
#
foreach ($ligne in $contenu_csv)
{
# On va ensuite envoyer chaque information dans une variable spécifique
$nom=$ligne.Nom
# Pour la ligne suivante, voici un autre exemple pour sélectionner la colonne Prenom..
# la colonne prénom est en 2nde position dans l'index.. [0] : 1ère position, [1] : 2e position
$prenom=$ligne.Prenom
$OU=$ligne.OU
#
# La commande pour créer :
New-ADUser -Name "$($prenom) $($nom)" -Surname "$($nom)" -GivenName "$($prenom)" -SamAccountName "$($prenom[0]).$($nom)" -UserPrincipalName "$($prenom).$($nom)@.INFO" -path "OU=$($OU),OU=ENTREPRISE,DC=,DC=INFO" -AccountPassword(ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true
}
2nd Script, Exemple avec un fichier .csv de plusieurs milliers d'utilisateurs !
Plusieurs problèmes avec de gros fichiers csv :
- les noms complets trop longs (le -SamAccountName fait 20 caractères au max)
Idée pour résoudre : couper les noms et prénoms et n'inscrire que les 5 premiers caractères de chaque. - les homonymes (certaines personnes ont les mêmes noms et prénoms).
Idée pour résoudre : ajouter le chiffre 2 au nom de l'utilisateur, lors de la rencontre de l'erreur pour compte déjà existant
# On crée une première variable qui va contenir le fichier .csv
$contenu_csv=Import-Csv -path "C:\Users\Administrateur\Desktop\Utilisateurs.csv" -Delimiter ","
#
foreach ($ligne in $contenu_csv)
{
# On va ensuite envoyer chaque information dans une variable spécifique
$nom=$($ligne.Nom)
# Pour la ligne suivante, voici un autre exemple pour sélectionner la colonne Prenom..
# la colonne prénom est en 2nde position dans l'index.. [0] : 1ère position, [1] : 2e position
$prenom=$($ligne.Prenom)
$OU=$($ligne.Service)
#
# La commande pour créer :
try{
New-ADUser -Name "$($prenom[0])$($prenom[1])$($prenom[2])$($prenom[3])$($prenom[4]).$($nom[0])$($nom[1])$($nom[2])$($nom[3])$($nom[4])" -Surname "$($nom)" -GivenName "$($prenom)" -SamAccountName "$($prenom[0])$($prenom[1])$($prenom[2])$($prenom[3])$($prenom[4]).$($nom[0])$($nom[1])$($nom[2])$($nom[3])$($nom[4])" -UserPrincipalName "$($prenom[0])$($prenom[1])$($prenom[2])$($prenom[3])$($prenom[4]).$($nom[0])$($nom[1])$($nom[2])$($nom[3])$($nom[4])@.INFO" -path "OU=$($OU),OU=ENTREPRISE,DC=,DC=INFO" -AccountPassword(ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true
}
catch {
New-ADUser -Name "$($prenom[0])$($prenom[1])$($prenom[2])$($prenom[3])$($prenom[4])2.$($nom[0])$($nom[1])$($nom[2])$($nom[3])$($nom[4])" -Surname "$($nom)" -GivenName "$($prenom)" -SamAccountName "$($prenom[0])$($prenom[1])$($prenom[2])$($prenom[3])$($prenom[4])2.$($nom[0])$($nom[1])$($nom[2])$($nom[3])$($nom[4])" -UserPrincipalName "$($prenom[0])$($prenom[1])$($prenom[2])$($prenom[3])$($prenom[4])2.$($nom[0])$($nom[1])$($nom[2])$($nom[3])$($nom[4])@.INFO" -path "OU=$($OU),OU=ENTREPRISE,DC=,DC=INFO" -AccountPassword(ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true
}
}
↑ Haut de page