Búsqueda de sitios web

Importar usuarios de AD desde CSV con PowerShell


Hay ocasiones en las que desea importar usuarios de forma masiva a Active Directory. Ya realizó una exportación de usuarios de AD a un archivo CSV. Pero ahora le gusta usar ese archivo CSV para importar los usuarios nuevamente a AD. El enfoque más rápido y excelente es utilizar PowerShell. En este artículo, aprenderá cómo importar usuarios de AD desde CSV con PowerShell.

Importar script de PowerShell de usuarios de AD

El script de PowerShell Import-ADUsers.ps1 revisará el archivo CSV y creará usuarios de AD con la siguiente información por usuario:

  1. Nombre completo

  2. Nombre de pila

  3. Apellido

  4. Nombre para mostrar

  5. Nombre de inicio de sesión del usuario

  6. Nombre principal de usuario

  7. Calle

  8. Ciudad

  9. Estado

  10. Código Postal

  11. País

  12. Título profesional

  13. Departamento

  14. Compañía

  15. Gerente

  16. UNED

  17. Descripción

  18. Oficina

  19. Número de teléfono

  20. Correo electrónico

  21. Móvil

  22. Notas

  23. Estado de la cuenta

Nota: La cuenta tendrá la contraseña establecida como P@ssw0rd1234. Cambie esto a una contraseña diferente en el script de PowerShell.

Cómo importar usuarios a Active Directory desde un archivo CSV

Sigamos los pasos e importemos de forma masiva usuarios de Active Directory desde un archivo CSV con PowerShell.

Paso 1: crear un archivo CSV con los usuarios

Sin un archivo CSV, no puede utilizar el script e importar los usuarios a AD.

  • Si ya tiene un Active Directory, puede ejecutar el script en el artículo Exportar usuarios de AD a CSV con PowerShell. Después de eso, usa ese archivo CSV.

  • Supongamos que no tiene un Active Directory para exportar los usuarios de AD a un archivo CSV y solo desea un ejemplo de archivo CSV para poder editarlo y usarlo; descargue el archivo CSV ImportADUsers.csv.

Paso 2: preparar el script de PowerShell para importar usuarios de AD

Descargue y coloque el script de PowerShell Import-ADUsers.ps1 en la carpeta del controlador de dominio C:\scripts. Si no tiene una carpeta de scripts, cree una.

Asegúrese de que el archivo esté desbloqueado para evitar errores al ejecutar el script. Lea más en el artículo Error sin firma digital al ejecutar el script de PowerShell.

Otra opción es copiar y pegar el siguiente código en el Bloc de notas. Asígnale el nombre Import-ADUsers.ps1 y colócalo en la carpeta C:\scripts.

<#
    .SYNOPSIS
    Import-ADUsers.ps1

    .DESCRIPTION
    Import Active Directory users from CSV file.

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

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

    .CHANGELOG
    V1.00, 04/24/2023 - Initial version
#>

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

# Import the Active Directory module
Import-Module ActiveDirectory

# Loop through each user
foreach ($User in $Users) {
    $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'
    $JobTitle = $User.'Job Title'
    $Department = $User.'Department'
    $Company = $User.'Company'
    $ManagerDisplayName = $User.'Manager'
    $Manager = if ($ManagerDisplayName) {
        Get-ADUser -Filter "DisplayName -eq '$ManagerDisplayName'" -Properties DisplayName |
        Select-Object -ExpandProperty DistinguishedName
    }
    $OU = $User.'OU'
    $Description = $User.'Description'
    $Office = $User.'Office'
    $TelephoneNumber = $User.'Telephone number'
    $Email = $User.'E-mail'
    $Mobile = $User.'Mobile'
    $Notes = $User.'Notes'
    $AccountStatus = $User.'Account status'

    # Check if the user already exists in AD
    $UserExists = Get-ADUser -Filter { SamAccountName -eq $SamAccountName } -ErrorAction SilentlyContinue

    if ($UserExists) {
        Write-Warning "User '$SamAccountName' already exists in Active Directory."
        continue
    }

    # Create new user parameters
    $NewUserParams = @{
        Name                  = "$GivenName $Surname"
        GivenName             = $GivenName
        Surname               = $Surname
        DisplayName           = $DisplayName
        SamAccountName        = $SamAccountName
        UserPrincipalName     = $UserPrincipalName
        StreetAddress         = $StreetAddress
        City                  = $City
        State                 = $State
        PostalCode            = $PostalCode
        Country               = $Country
        Title                 = $JobTitle
        Department            = $Department
        Company               = $Company
        Manager               = $Manager
        Path                  = $OU
        Description           = $Description
        Office                = $Office
        OfficePhone           = $TelephoneNumber
        EmailAddress          = $Email
        MobilePhone           = $Mobile
        AccountPassword       = (ConvertTo-SecureString "P@ssw0rd1234" -AsPlainText -Force)
        Enabled               = if ($AccountStatus -eq "Enabled") { $true } else { $false }
        ChangePasswordAtLogon = $true # Set the "User must change password at next logon" flag
    }

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

    try {
        # Create the new AD user
        New-ADUser @NewUserParams
        Write-Host "User $SamAccountName created successfully." -ForegroundColor Cyan
    }
    catch {
        # Failed to create the new AD user
        Write-Warning "Failed to create user $SamAccountName. $_"
    }
}
  • Línea 21: Edite la ubicación del archivo CSV.

  • Línea 87: Cambiar contraseña.

Paso 3: Ejecute el script de PowerShell para importar usuarios de AD

Ejecute PowerShell como administrador. Cambie la ruta a la carpeta de scripts. Ejecute el script de PowerShell para importar usuarios de AD desde un archivo CSV. Espere hasta que se complete.

PS C:\> cd c:\scripts
PS C:\scripts> .\Import-ADUsers.ps1

El guión mostrará si:

  1. El usuario se crea exitosamente.

  2. El usuario ya existe.

  3. El usuario no se puede crear con una advertencia.

WARNING: User 'Kylie.Davidson' already exists in Active Directory.
WARNING: User 'Leonard.Clark' already exists in Active Directory.
WARNING: User 'Madeleine.Fisher' already exists in Active Directory.
WARNING: User 'Melanie.Scott' already exists in Active Directory.
WARNING: User 'Nicholas.Murray' already exists in Active Directory.
WARNING: User 'Piers.Bower' already exists in Active Directory.
WARNING: User 'Ruth.Dickens' already exists in Active Directory.
User Sebastian.Nolan created successfully.
User Zoe.Roberts created successfully.

Paso 4: verificar los usuarios de AD

Verifique que los usuarios se hayan creado correctamente en Active Directory.

Leer más: Agregue usuarios a varios grupos con PowerShell »

Conclusión

Aprendió a importar usuarios de AD desde CSV con PowerShell. Si utiliza el script de PowerShell Exportar usuarios de AD y desea volver a importar los usuarios a Active Directory, ejecute el script de PowerShell Importar usuarios de AD.

Disfrutaste este artículo? También te puede interesar Exportar usuarios deshabilitados desde Active Directory. No olvides seguirnos y compartir este artículo.

Artículos relacionados