Saltar al contenido
Inicio / Windows Server / PowerShell: Crear Usuarios desde un CSV

PowerShell: Crear Usuarios desde un CSV

Vamos a ver como podemos utilizar PowerShell para crear usuarios en nuevo Active Directory importándolos de un CSV, asi que lo primero que tenemos que hacer es crear nuestro CSV con los campos necesarios. Para ello debemos abrir una EXCEL y crear los siguientes campos:

Crear_Usuario_PowerShell_4.JPG

Este artículo los vamos a hacer con los campos básicos, pero vosotros podéis añadir algunos más (aunque tiene sus limitaciones). Yo he añadido los siguientes atributos:

userPrincipalName: Nombre Principal del Usuario (UPN)
SamAccountName: Nombre de usuario pre-Windows 2000
Name: Nombre para mostrar
GivenName: Nombre de Pila
SurName: Apellidos
Title: Puesto
Department: Departamento
Company: Organización
Manager: Administrador

Ahora lo que haremos será cubrir la EXCEL con los datos que tengamos (en mi caso inventados)

Crear_Usuario_PowerShell_3.JPG

Una vez que hemos cubierto los datos en la EXCEL debemos guardarla como CSV (delimitados por comas)

Crear_Usuario_PowerShell_5.JPG

Ahora comprobamos que el formato del CSV

Crear_Usuario_PowerShell_6.jpg

Desde PowerShell : Import-Csv nombre_csv

Crear_Usuario_PowerShell_1.jpg

Una vez que hemos verificado que aparentemente todo está correctamente, vamos a revisar el script que utilizaremos para crear los usuarios en nuestro Active Directory. He creado dos dos scripts sencillitos, uno añadiendo nosotros UPN del usuario desde el script y el otro script asignará el UPN a los usuarios directamente desde el campo UserPrincipalName  que hemos creado en el CSV

UPN desde el Fichero CSV

Import-Csv .\Plantilla_Usuarios.csv | foreach-object {
New-ADUser -SamAccountName $_.SamAccountName -UserPrincipalName $_.userPrincipalName -Name $_.name -DisplayName $_.name -GivenName $_.GivenName -SurName $_.SurName -Title $_.Title -Manager $_.Manager -Company $_.Company -Department $_.Department -Path “OU=Usuarios,OU=ASIRLAB,DC=asirlab,DC=com” -AccountPassword (ConvertTo-SecureString “^*Test_2012;” -AsPlainText -force) -Enabled $True -PasswordNeverExpires $True -PassThru }

UPN desde el Script (tenemos quitar el campo userPrincipalName del csv)

Import-Csv .\Plantilla_Usuarios.csv | foreach-object {
$userprinicpalname = $_.SamAccountName + “@asirlab.com
New-ADUser -SamAccountName $_.SamAccountName -UserPrincipalName $userprinicpalname -Name $_.name -DisplayName $_.name -GivenName $_.GivenName -SurName $_.SurName -Title $_.Title -Manager $_.Manager -Company $_.Company -Department $_.Department -Path “OU=Usuarios,OU=ASIRLAB,DC=asirlab,DC=com” -AccountPassword (ConvertTo-SecureString “^*Test_2012;” -AsPlainText -force) -Enabled $True -PasswordNeverExpires $True -PassThru }
Una vez ejecutado el script ya tendremos los usuarios creados en la OU que le hemos indicado en el parámetro -Path
Crear_Usuario_PowerShell_12.jpg
Si queremos añadir más atributos  en el CSV únicamente debemos añadirlos de la siguiente manera: (estos sonlos campos que tenemos disponibles desde el cmdlet que utilizaremos)
    [-Name] <string> [-WhatIf] [-Confirm] [-AccountExpirationDate <datetime>] [-AccountNotDelegated <bool>] 
    [-AccountPassword <securestring>] [-AllowReversiblePasswordEncryption <bool>] [-AuthType <ADAuthType> {Negotiate | Basic}]
    [-CannotChangePassword <bool>] [-Certificates <X509Certificate[]>] [-ChangePasswordAtLogon <bool>] [-City <string>] [-Company
    <string>] [-CompoundIdentitySupported <bool>] [-Country <string>] [-Credential <pscredential>] [-Department <string>]
    [-Description <string>] [-DisplayName <string>] [-Division <string>] [-EmailAddress <string>] [-EmployeeID <string>]
    [-EmployeeNumber <string>] [-Enabled <bool>] [-Fax <string>] [-GivenName <string>] [-HomeDirectory <string>] [-HomeDrive
    <string>] [-HomePage <string>] [-HomePhone <string>] [-Initials <string>] [-Instance <ADUser>] [-KerberosEncryptionType
    <ADKerberosEncryptionType> {None | DES | RC4 | AES128 | AES256}] [-LogonWorkstations <string>] [-Manager <ADUser>] [-MobilePhone
    <string>] [-Office <string>] [-OfficePhone <string>] [-Organization <string>] [-OtherAttributes <hashtable>] [-OtherName
    <string>] [-PassThru] [-PasswordNeverExpires <bool>] [-PasswordNotRequired <bool>] [-Path <string>] [-POBox <string>]
    [-PostalCode <string>] [-PrincipalsAllowedToDelegateToAccount <ADPrincipal[]>] [-ProfilePath <string>] [-SamAccountName
    <string>] [-ScriptPath <string>] [-Server <string>] [-ServicePrincipalNames <string[]>] [-SmartcardLogonRequired <bool>] [-State
    <string>] [-StreetAddress <string>] [-Surname <string>] [-Title <string>] [-TrustedForDelegation <bool>] [-Type <string>]
    [-UserPrincipalName <string>]  [<CommonParameters>]
Añadimos el nuevo atributo al CSV
Crear_Usuario_PowerShell_8.JPG
Crear_Usuario_PowerShell_9.jpg
y modificamos el script para añadir el nuevo atributo: -Etiqueta $_.Etiqueta
Ejemplo CMDLET (añadiremos el teléfono del domicilio)
Import-Csv .\Plantilla_Usuarios.csv | foreach-object {
New-ADUser -SamAccountName $_.SamAccountName -UserPrincipalName $_.userPrincipalName -Name $_.name -DisplayName $_.name -GivenName $_.GivenName -HomePhone $_.HomePhone -SurName $_.SurName -Title $_.Title -Manager $_.Manager -Company $_.Company -Department $_.Department -Path “OU=Usuarios,OU=ASIRLAB,DC=asirlab,DC=com” -AccountPassword (ConvertTo-SecureString “^*Test_2012;” -AsPlainText -force) -Enabled $True -PasswordNeverExpires $True -PassThru }
Una vez hayamos ejecutado el script hemos creado el usuario con el número de teléfono su domicilio (HomePhone)
Crear_Usuario_PowerShell_13.jpg
Crear_Usuario_PowerShell_10.jpg
En el script que os muestro también añadimos el atributo de Manager, para que funcione correctamente el usuario que añadamos como manager debe existir en el Directorio Activo. Como podéis observar es muy sencillo y muy útil, sobre todo cuando queremos configurar cientos usuarios en un tiempo record.
Sino queremos crear el fichero CSV manualmente, existen múltiples herramientas gratuitas para hacernos la vida más sencilla, por ejemplo Active Directory CSV generator tool. Esta herramienta además cuenta con utilidades para revisar ciertas opciones de nuestro AD.
Os adjunto los scrtips en PowerShell y una EXCEL con los campos básicos por si queréis utilizarlo como plantilla antes de convertirlo en CSV,  siempre  es más cómodo de trabajar.Scripts y CSV Usuarios AD.rarScripts y CSV Usuarios AD.rar
Espero que les sea de utilidad!!!!
Etiquetas:

18 comentarios en «PowerShell: Crear Usuarios desde un CSV»

  1. Muy buena la guia pero tengo este problema al ejecutar los pasos tal como me loindicas en el script si me dieras un consejo lo agradeceria. gracias.

    El término ‘New-ADUser’ no se reconoce como nombre de un cmdlet, función, archivo de script o programa ejecutable. Compruebe si escribió correctamente el nombre o, si incluyó una ruta
    de acceso, compruebe que dicha ruta es correcta e inténtelo de nuevo.

  2. El término 'New-ADUser' no se reconoce como nombre de un cmdlet

    hola,
    muy buena guia,pero, me sale el siguiente error
    El término ‘New-ADUser’ no se reconoce como nombre de un cmdlet, ojala puedas ayudarme,
    muchas gracias.

  3. cambiar atributos usuarios usando powershell

    como cambio el atributo de todos los usuarios en el campo Organization company : ext 6666
    la extenciones de teléfonos en el directorio activo

  4. Buenos días Romel:

    Te respondo al mensaje que has dejado en mi blog, si tu idea es cambiar a todos los usuarios del Dominio o bien los que están en una OU su número de teléfono aquí tienes el cmdlet:

    get-aduser -Filter * -SearchBase “ou=usuarios,dc=dominio,dc=com” | Set-ADUser -OfficePhone 1111111111

    Tienes sustituir OfficePhone por el atributo que quieras modificar y establecer su valor

    Un saludo

  5. Oye instale el paquete de PowerShell peor no me da la opción de administrador Módulo de Active Directory para Windows PowerShell?
    sabes a que se puede deber??

  6. Hola gracias por compartir tus conocimientos. En estos momentos necesito desabilitar una cantidad grande de cuentas de usuarios que ya no trabajan en la empresa. En si lo que necesito: desabilitarlos y moverlos a una OU en particular. Muchas gracias por la ayuda que puedas brindarme.

  7. Grandes cantidades de usuarios

    Mi duda es con el import-csv, cuando se quieren manejar grandes cantidades de datos (decenas de miles)

    Entiendo que importar el csv completo puede causar problemas de memoria y ralentizar el proceso. Se que una opción es trocear el csv, pero estaba buscando si se podría hacer el import por ejemplo de 1000 en 1000 registros, y no encuentro nada.

  8. Buenos dias,

    ¿Hay alguna posibilidad de poder exportar los usuarios del AD indicando los grupos a los que pertenece, la membresia de cada usuario?

    Gracias de antemano y un saludo.

  9. Re: PowerShell: Crear Usuarios desde un CSV

    Hola, tengo que crear unos usuarios definidos previamente en un CSV. Tengo que meter a cada uno en su unidad organizativa correspondiente. Cómo hago eso?

    Un saludo

  10. Hice un servidor virtual para correr script para AD, pero todo me da error de acceso, alguno sabe como puedo arreglarolo.

    gracias y saludos.

  11. quiero modificar datos de un usuario existente con el comando:
    $csv = Import-Csv C:\Users\YRM\Downloads\prueba.csv | ForEach {Set-MsolUser $_.UserPrincipalName -Title $_.title -DisplayName $_.DisplayName }

    pero me sale como resultado :
    Set-MsolUser : No se encuentra ningún parámetro de posición que acepte el argumento ‘$null’.

    Como resuelvo ello?

    1. Santiago Buitrago Reis

      Buenos días,

      ¿Que versión de Windows Server estás ejecutando? Si estás ejecutando PowerShell sin cargar los módulos de Active Directory, ejecuta esto primero: Import-Module ActiveDirectory. Estás ejecutando el cmdlet desde un controlador de dominio?

      Un saludo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¡Comparte!