Importer des utilisateurs AD depuis CSV avec PowerShell

Il peut arriver que vous souhaitiez importer en masse des utilisateurs dans Active Directory. Vous avez déjà effectué une exportation des utilisateurs AD vers un fichier CSV. Mais maintenant, vous aimez utiliser ce fichier CSV pour réimporter les utilisateurs dans AD. L’approche la plus rapide et la plus efficace consiste à utiliser PowerShell. Dans cet article, vous apprendrez comment importer des utilisateurs AD depuis CSV avec PowerShell.

Le script PowerShell Import-ADUsers.ps1 parcourra le fichier CSV et créera des utilisateurs AD avec les informations ci-dessous par utilisateur :

  1. Nom et prénom
  2. Prénom
  3. Nom de famille
  4. Nom d'affichage
  5. Nom de connexion de l'utilisateur
  6. Nom de l'utilisateur principal
  7. Rue
  8. Ville
  9. État
  10. Code Postal
  11. Pays
  12. Titre d'emploi
  13. Département
  14. Entreprise
  15. Directeur
  16. OU
  17. Description
  18. Bureau
  19. Numéro de téléphone
  20. E-mail
  21. Mobile
  22. Remarques
  23. Statut du compte

Note:Le compte aura le mot de passe défini commeP@ssw0rd1234. Remplacez-le par un mot de passe différent dans le script PowerShell.

Comment importer des utilisateurs dans Active Directory à partir d'un fichier CSV

Passons en revue les étapes et importons en masse des utilisateurs Active Directory à partir d'un fichier CSV avec PowerShell.

Étape 1 : Créer un fichier CSV avec les utilisateurs

Sans fichier CSV, vous ne pouvez pas utiliser le script et importer les utilisateurs dans AD.

Lecture recommandée :Exporter les enregistrements DNS au format CSV avec PowerShell

  • Si vous disposez déjà d'un Active Directory, vous pouvez exécuter le script dans l'article Exporter les utilisateurs AD vers CSV avec PowerShell. Après cela, utilisez ce fichier CSV.
  • Supposons que vous n'ayez pas d'Active Directory pour exporter les utilisateurs AD vers un fichier CSV et que vous souhaitiez uniquement un exemple de fichier CSV afin de pouvoir le modifier et l'utiliser ; téléchargez le fichier CSV ImportADUsers.csv.

Téléchargez et placez le script PowerShell Import-ADUsers.ps1 sur le contrôleur de domaineC:scriptsdossier. Si vous n'avez pas de dossier de scripts, créez-en un.

Assurez-vous que le fichier est débloqué pour éviter les erreurs lors de l'exécution du script. Pour en savoir plus, consultez l'article Erreur non signée numériquement lors de l'exécution du script PowerShell.

Une autre option consiste à copier et coller le code ci-dessous dans le Bloc-notes. Donnez-lui le nomImporter-ADUsers.ps1et placez-le dans leC:scriptsdossier.

<#
    .SYNOPSIS
    Import-ADUsers.ps1

    .DESCRIPTION
    Import Active Directory users from CSV file.

    .LINK
    alitajran.com/import-ad-users-from-csv-powershell

    .NOTES
    Written by: ALI TAJRAN
    Website:    alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V2.00, 02/11/2024 - Refactored script
#>

# Define the CSV file location and import the data
$Csvfile = "C:tempImportADUsers.csv"
$Users = Import-Csv $Csvfile

# The password for the new user
$Password = "P@ssw0rd1234"

# Import the Active Directory module
Import-Module ActiveDirectory

# Loop through each user
foreach ($User in $Users) {
    try {
        # Retrieve the Manager distinguished name
        $managerDN = if ($User.'Manager') {
            Get-ADUser -Filter "DisplayName -eq '$($User.'Manager')'" -Properties DisplayName |
            Select-Object -ExpandProperty DistinguishedName
        }

        # Define the parameters using a hashtable
        $NewUserParams = @{
            Name                  = "$($User.'First name') $($User.'Last name')"
            GivenName             = $User.'First name'
            Surname               = $User.'Last name'
            DisplayName           = $User.'Display name'
            SamAccountName        = $User.'User logon name'
            UserPrincipalName     = $User.'User principal name'
            StreetAddress         = $User.'Street'
            City                  = $User.'City'
            State                 = $User.'State/province'
            PostalCode            = $User.'Zip/Postal Code'
            Country               = $User.'Country/region'
            Title                 = $User.'Job Title'
            Department            = $User.'Department'
            Company               = $User.'Company'
            Manager               = $managerDN
            Path                  = $User.'OU'
            Description           = $User.'Description'
            Office                = $User.'Office'
            OfficePhone           = $User.'Telephone number'
            EmailAddress          = $User.'E-mail'
            MobilePhone           = $User.'Mobile'
            AccountPassword       = (ConvertTo-SecureString "$Password" -AsPlainText -Force)
            Enabled               = if ($User.'Account status' -eq "Enabled") { $true } else { $false }
            ChangePasswordAtLogon = $true # Set the "User must change password at next logon"
        }

        # Add the info attribute to OtherAttributes only if Notes field contains a value
        if (![string]::IsNullOrEmpty($User.Notes)) {
            $NewUserParams.OtherAttributes = @{info = $User.Notes }
        }

        # Check to see if the user already exists in AD
        if (Get-ADUser -Filter "SamAccountName -eq '$($User.'User logon name')'") {

            # Give a warning if user exists
            Write-Host "A user with username $($User.'User logon name') already exists in Active Directory." -ForegroundColor Yellow
        }
        else {
            # User does not exist then proceed to create the new user account
            # Account will be created in the OU provided by the $User.OU variable read from the CSV file
            New-ADUser @NewUserParams
            Write-Host "The user $($User.'User logon name') is created successfully." -ForegroundColor Green
        }
    }
    catch {
        # Handle any errors that occur during account creation
        Write-Host "Failed to create user $($User.'User logon name') - $($_.Exception.Message)" -ForegroundColor Red
    }
}
  • Ligne 21 :Modifiez l'emplacement du fichier CSV.
  • Ligne 25 :Changer le mot de passe.

Exécutez PowerShell en tant qu'administrateur et exécutez le script PowerShell pour importer les utilisateurs AD à partir du fichier CSV. Attendez que ce soit terminé.

C:scripts.Import-ADUsers.ps1

Le script indiquera si :

  1. L'utilisateur est créé avec succès.
  2. L'utilisateur existe déjà.
  3. L'utilisateur ne peut pas être créé avec le message d'erreur.
A user with username Kylie.Davidson already exists in Active Directory.
A user with username Leonard.Clark already exists in Active Directory.
A user with username Madeleine.Fisher already exists in Active Directory.
A user with username Melanie.Scott already exists in Active Directory.
A user with username Nicholas.Murray already exists in Active Directory.
A user with username Piers.Bower already exists in Active Directory.
A user with username Ruth.Dickens already exists in Active Directory.
The user Sebastian.Nolan is created successfully.
The user Zoe.Roberts is created successfully.

Vérifiez que les utilisateurs sont créés avec succès dans Active Directory.

Conclusion

Vous avez appris à importer des utilisateurs AD à partir d'un CSV avec PowerShell. Si vous utilisez le script PowerShell Exporter les utilisateurs AD et que vous souhaitez réimporter les utilisateurs dans Active Directory, exécutez le script PowerShell Importer les utilisateurs AD.

Avez-vous apprécié cet article ? Vous aimerez peut-être aussi Exporter les utilisateurs désactivés depuis Active Directory. N'oubliez pas de nous suivre et de partager cet article.

Related Posts