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:
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:
Ahora lo que haremos será cubrir la EXCEL con los datos que tengamos (en mi caso inventados)
Una vez que hemos cubierto los datos en la EXCEL debemos guardarla como CSV (delimitados por comas)
Ahora comprobamos que el formato del CSV
Desde PowerShell : Import-Csv nombre_csv
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
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)
$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 }

[-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>]


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 }



problemas / Autor / 20 mayo, 2013
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.
El término 'New-ADUser' no se reconoce como nombre de un cmdlet / Autor / 28 julio, 2014
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.
Respueta / Autor / 1 agosto, 2014
Hola:
Has ejecutado el Módulo de Active Directory para Windows PowerShell?
Un saludo
cambiar atributos usuarios usando powershell / Autor / 29 agosto, 2014
como cambio el atributo de todos los usuarios en el campo Organization company : ext 6666
la extenciones de teléfonos en el directorio activo
Respuewsta / Autor / 30 agosto, 2014
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
clave de usuario / Autor / 19 septiembre, 2014
como pondria una clave distinta para cada usuario
www.jsequeiros.com / Autor / 3 febrero, 2015
Es un excelente manual para simplificar procesos.
Respuesta J-Sequeiros / Autor / 3 febrero, 2015
Gracias Jesús por tus comentarios!!
Un saludo
Poweshell / Autor / 12 febrero, 2015
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??
Desabilitar usuarios / Autor / 13 febrero, 2015
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.
Agregar Ip Phone / Autor / 8 abril, 2015
Hola quisiera saber como cambiarle el teléfono ip a usuarios ya que tengo muchos por actualizar gracias.
Grandes cantidades de usuarios / Autor / 21 abril, 2015
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.
Membresía / Autor / 28 enero, 2016
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.
Re: PowerShell: Crear Usuarios desde un CSV / Autor / 18 febrero, 2016
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
acceso denegado / Autor / 5 marzo, 2016
Hice un servidor virtual para correr script para AD, pero todo me da error de acceso, alguno sabe como puedo arreglarolo.
gracias y saludos.
yesenia / 10 abril, 2018
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?
er / 25 enero, 2019
El término ‘New-ADUser’ no se reconoce como nombre de un cmdlet. Ingeniero buen dia, por favor solucion, gracias.
Santiago Buitrago Reis / 29 enero, 2019
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