
Il est courant d’avoir un LDAP pour les utilisateur Linux/*nix et un Active Directory pour les utilisateurs sous Windows. Parfois, c’est intéressant d’exporter les utilisateurs du ldap avec quelques infos pour les importer vers l’active directory.
Voici un exemple de fichier qui permet de faire cela. Le fichier a été nettoyé d’informations de mon infra du boulot mais l’idée est là et ça fonctionne. Dans mon cas, il fonctionne de manière quotidienne. Il est lancé par une tâche planifiée.
Avec quelques notions en POSH aka Powershell vous pourrez l’améliorer et le modifier à votre convenance.
# Importer le module active directory pour utiliser les cmdlets AD Import-Module activedirectory #copier le fichier csv du ldap ou d'une ressource partagée sur le réseau à partir d'une url Invoke-WebRequest -Uri "http://intra.deployadmin.com/ldap/ldap.csv" -OutFile "C:\ldap2adds\ldap.csv" #Chemin complet du path $pathldap2adds = "C:\ldap2adds" $SourceFilePath = "C:\ldap2adds\ldap.csv" # $ADServer = "ad3.deployadmin.com" # $csvreportfile = $SourceFilePath $SearchLoc ="CN=users,Dc=deployadmin,DC=com" $ADServer = "ad4.deployadmin.com" # Diverses informations utiles # Stocker les données de ldap.csv dans la variable $ADUsers # Une boucle sur chaque ligne utilisateur contenant les infos de l'utilisateur dans le fichier csv $ADUsers = Import-csv $SourceFilePath -Delimiter "|" foreach ($User in $ADUsers) { $Username = $User.uid $Password = "c6nW484EiFX3" $Firstname = $User.givenname $Lastname = $User.sn $UserMailName = $User.mail $OU = "Dc=deployadmin,DC=com" $path="CN=Users,Dc=deployadmin,DC=com" if (Get-ADUser -F {SamAccountName -eq $Username}) { #Si l'utilisateur existe envoyer un warning Write-Warning "le compte utilisateur avec le nom d'utilisateur $Username existe déjà dans l'Active Directory." } else { #Si l'utilisateur n'existe pas alors creer le compte utilisateur # Le compte sera cree dans l'OU fourni par 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 ` } } # Feature : sauvegarde du fichier ldap.csv avec la date du jour d'importation $DateNow = Get-Date -Format "yyyyMMdd" #Date 20210224 $FileName = [io.path]::GetFileNameWithoutExtension($SourceFilePath) #Récupérer le nom de fichier sans son extension $FileExtension = [io.path]::GetExtension($SourceFilePath) #Récuperer l'extension du fichier Rename-Item -Path $SourceFilePath -newname $FileName$DateNow$FileExtension #Rename filename