Je vous propose ce script qui permet d’ajouter des utilisateurs en masse idem que ce post http://blog.purplescreen.fr/?p=920
Mais un peu plus complet. Il gère les erreurs utilisateurs et propose des templates utilisateur pour les ajouter dans les groupes AD souhaitez. Il faudra mettre vos templates dans une OU séparer et modifier les lignes correspondantes a votre infrastructure.
#Script by Olivier Gosselin #http://blog.purplescreen.fr/ #Chemin du fichier TXT #Champ1;Champ2;Champ3 #TemplateUser;FirstName;LastName #Import-module ActiveDirectory $File = Get-Content -Path "ChemindeVotreFichierTXT" #A quel endroit je veux créer les utilisateurs #Exemple pour ces lignes (mettre le chemin pour les templates) $PathOUDestination = "OU=Users,OU=HOME,DC=home,DC=local" $OUTemplate = "OU=Templates,OU=Users,OU=HOME,DC=home,DC=local" $NbCaracterePassword = "10" $upnName = "@home.local" #Password complexe modifier la valeur $NbCaracterePassword selon vos besoins function GenPassword () { $Assembly = Add-Type -AssemblyName System.Web $password = [System.Web.Security.Membership]::GeneratePassword($NbCaracterePassword,2) return $password } Foreach ($line in $File) { #On découpe avec de ; $line_splitted = $line.split(";") #On créer l'utilisateur $password = GenPassword $TemplateUser = $line_splitted[0] $firstName = $line_splitted[1] $lastName = $line_splitted[2] ##On récupère le login en fonction du fisrt Name et et Last Name $firstNameLetter = $firstName.Substring(0,1) $login = "$firstNameLetter$lastName".Replace(' ','') $Userlogin = $login.ToLower() #$MembersGroup = $Userlogin $secureString = convertto-securestring "$password" -asplaintext -force #On vérifier si une valeur est présente dans la liste if (!$TemplateUser) { $SelectTemplate = Get-ADUser -SearchBase $OUTemplate -Filter * $CountSelect = $SelectTemplate.count Write-Host "Aucun template de renseigner dans le fichier pour l'utilisateur $Userlogin" for ($i=0;$i -lt $CountSelect;$i++) { Write-Host $i " : "$SelectTemplate.Name[$i] }#FIN for $MaxVal = $i-1 do { $ChoixTemplate = Read-Host "Votre Choix ?[0-"$MaxVal"]" } while ((!$ChoixTemplate) -or ($ChoixTemplate -ge $CountSelect) -or ($ChoixTemplate -match '\D+')) $TemplateUser = $SelectTemplate.Name[$ChoixTemplate] #Write-Host "Votre choix est :" $Template #Recuperation du SAMObject pour le template $templateSAM = Get-ADUser -Filter {(Name -eq $TemplateUser)} $templateSAM = $templateSAM.SamAccountName #Le template correspond avec un des utilisateurs template. On créer l'utilisateur et on utilise le template #Creation de l'utilisateur New-ADUser -UserPrincipalName "$Userlogin$upnName" -SamAccountName $Userlogin -Name "$firstName $lastName" -GivenName $firstName -DisplayName "$firstName $lastName" -Surname $lastName -Path "$PathOUDestination" -Description "Password : $password" -ChangePasswordAtLogon 0 -CannotChangePassword 0 -AccountPassword $secureString -Enabled 1 #Ajout dans les groupes Get-ADUser -Identity $templateSAM -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $Userlogin } #Si une valeur est présente, on vérifie que la valeur est bonne else { $SelectTemplate = Get-ADUser -SearchBase $OUTemplate -Filter * $CountSelect = $SelectTemplate.count if ($SelectTemplate.Name -contains $TemplateUser) { Write-Host "Le template pour user $Userlogin a été retrouver dans les templates disponibles. L'utilisateur est créé $Userlogin" Write-Host "==================================================================================================================" #Recuperation du SAMObject pour le template $templateSAM = Get-ADUser -Filter {(Name -eq $TemplateUser)} $templateSAM = $templateSAM.SamAccountName #Write-Host "SamTemplate :" $templateSAM.SamAccountName #Le template correspond avec un des utilisateurs template. On créer l'utilisateur et on utilise le template #Creation de l'utilisateur New-ADUser -UserPrincipalName "$Userlogin$upnName" -SamAccountName $Userlogin -Name "$firstName $lastName" -GivenName $firstName -DisplayName "$firstName $lastName" -Surname $lastName -Path "$PathOUDestination" -Description "Password : $password" -ChangePasswordAtLogon 0 -CannotChangePassword 0 -AccountPassword $secureString -Enabled 1 #Ajout dans les groupes Get-ADUser -Identity $templateSAM -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $Userlogin ##############Debug #Write-Host "Debug :" #Write-Host "Template SAM : $templateSAM" #Write-Host "UpN : $Userlogin$upnName" #Write-Host "Login : $Userlogin" #Write-Host "FirstName : $firstName" #Write-Host "LastName : $lastName" #Write-Host "PathOU : $PathOUDestination" #Write-Host "Password : $password" #Write-Host "MemberGroup : $MembersGroup" } else { $SelectTemplate = Get-ADUser -SearchBase $OUTemplate -Filter * $CountSelect = $SelectTemplate.count Write-Host "Le template pour user $Userlogin est différent des templates disponibles. Merci d'en choisir un dans la liste" Write-Host "============================================================================================================" for ($i=0;$i -lt $CountSelect;$i++) { Write-Host $i " : "$SelectTemplate.Name[$i] }#FIN for $MaxVal = $i-1 do { $ChoixTemplate = Read-Host "Votre Choix ?[0-"$MaxVal"]" } while ((!$ChoixTemplate) -or ($ChoixTemplate -ge $CountSelect) -or ($ChoixTemplate -match '\D+')) $TemplateUser = $SelectTemplate.Name[$ChoixTemplate] #Write-Host "Votre choix est :" $Template #Recuperation du SAMObject pour le template $templateSAM = Get-ADUser -Filter {(Name -eq $TemplateUser)} $templateSAM = $templateSAM.SamAccountName #Le template correspond avec un des utilisateurs template. On créer l'utilisateur et on utilise le template #Creation de l'utilisateur New-ADUser -UserPrincipalName "$Userlogin$upnName" -SamAccountName $Userlogin -Name "$firstName $lastName" -GivenName $firstName -DisplayName "$firstName $lastName" -Surname $lastName -Path "$PathOUDestination" -Description "Password : $password" -ChangePasswordAtLogon 0 -CannotChangePassword 0 -AccountPassword $secureString -Enabled 1 #Ajout dans les groupes Get-ADUser -Identity $templateSAM -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $Userlogin } } #Fin else } #Fin foreach