En entreprise, dans le milieu de l’Enseignement Supérieur et la Recherche, il n’est pas rare d’avoir 2 environnements concomitant. Dans ce type de cas de figure, vous pouvez être amené à avoir des utilisateurs qui utilisent indifféremment les outils Linux et Windows. Pour cela, il peut être nécessaire d’importer les utilisateurs inscris dans l’annuaire LDAP vers l’Active Directory. On peut le faire à la main (où recruter un stagiaire voire un CDD pour faire le boulot), ou faire cela automatiquement avec un script powershell.
Je pars d’un export de l’annuaire au format csv. On peut toujours le faire avec un fichier ldif mais la méthode est différente.
Voici mon script brut de fonderie (il n’est pas dans les règles de l’art) :
# Import module active directory pour lancer cmdlets AD
Import-Module activedirectory
$ADServer = "dc2.deployadmin.com"
$SearchLoc ="CN=users,Dc=deployadmin,DC=com"
#Store the data from ADUsers.csv in the $ADUsers variable
#$csvreportfile = $path + "\ALLADUsers_$reportdate.csv"
$csvreportfile = "C:\Users\Administrateur\Documents\ldap.csv"
# $ADUsers = Import-csv .\ADUsers.csv
$ADUsers = Import-csv $csvreportfile
#Une boucle foreach pour parcourir le fichier csv
foreach ($User in $ADUsers)
{
$Username = $User.uid
# On peut récupérer la chaine de caractère du champs userpassword "tel quel"
# du fichier csv
# $Password = $User.userpassword
# Ou définir un password par défaut.
$Password = "7azyP@ssuw0rdu!"
$Firstname = $User.givenname
$Lastname = $User.sn
$UserMailName = $User.mail
# $OU = OU où doit être enregistrer les utilisateurs
$OU = "Dc=deployadmin,DC=com"
$path="CN=users,Dc=deployadmin,DC=com"
#On vérifie si l'utilisateur existe déjà dans l'AD
if (Get-ADUser -F {SamAccountName -eq $Username})
{
#Si l'utilisateur existe, affiché un Warning
Write-Warning "A user account with username $Username already exist in Active Directory."
}
else
{
# Si l'utilisateur n'est pas dans l'AD, on crée le compte
# Le compte sera créée dans l'OU fourni dans la variable $OU
New-ADUser `
-SamAccountName $Username `
-UserPrincipalName $UserMailName `
-Name "$Firstname $Lastname" `
-GivenName $Firstname `
-Surname $Lastname `
-EmailAddress $UserMailName `
-Enabled $True `
-DisplayName "$Lastname $Firstname" `
-Path $path `
-AccountPassword (convertto-securestring $Password -AsPlainText -Force) `
-ChangePasswordAtLogon $true `
-passThru
# -PasswordNeverExpires $true `
# -ChangePasswordAtLogon $true `
# -passThru | Set-ADUser -ChangePasswordAtLogon:$true
# -passThru (Set-ADUser -ChangePasswordAtLogon:$true)
# -passThru `
}
}
# memo pour commande New-ADUser
# New-ADUser -Name portail -AccountPassword LaZ1P@$uw0rdu_ka! -Country France
# -DisplayName "William Portail" -EmailAddress william.portail@fenetres.fr
# -SamAccountName portailw
# New-ADUser -Name portail -AccountPassword EaZ1P@$w00rd! -ChangePasswordAtLogon
# $true -Country France -DisplayName "William Portail" -EmailAddress
# william.portail@windows.10 -GivenName "William Portail" -PasswordNeverExpires
# $true -PasswordNotRequired $false -Path Dc=deployadmin,DC=com -SamAccountName
# portailw
La prochaine étape. Automatisé l’import des utilisateurs LDAP dans l’AD par une tâche planifié.