You are on page 1of 6

PowerShell: Crear Usuarios desde un CSV

Vamos a ver cmo podemos utilizar PowerShell para crear usuarios en nuevo Active
Directory importndolos de un documento con extensin CSV, as que lo primero que tenemos que
hacer es crear nuestro documento CSV con los campos necesarios. Para ello debemos abrir una EXCEL y
crear los siguientes campos:



Este manual los vamos a hacer con los campos bsicos, pero nosotros podemos aadir algunos ms
(aunque tiene sus limitaciones). Yo he aadido 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: Organizacin
Manager: Administrador

Ahora lo que haremos ser llenar el EXCEL con los datos que tengamos (en mi caso inventados)

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

Ahora comprobamos el formato del CSV

Desde PowerShell: Import-Csv nombre_csv

Una vez que hemos verificado que todo est correctamente, vamos a revisar el script que utilizaremos
para crear los usuarios en nuestro Active Directory. He creado dos scripts sencillitos, uno aadiendo
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
parmetro -Path



Si queremos aadir ms atributos en el CSV nicamente debemos aadirlos de la siguiente manera:
(estos son los 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>]

Aadimos el nuevo atributo al CSV



Y modificamos el script para aadir el nuevo atributo: -Etiqueta $_.Etiqueta

Ejemplo CMDLET (aadiremos el telfono 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 nmero de telfono su
domicilio (HomePhone)



En el script que os muestro tambin aadimos el atributo de Manager, para que funcione
correctamente el usuario que aadamos como manager debe existir en el Directorio Activo.
Como podis 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 mltiples herramientas gratuitas para
hacernos la vida ms sencilla, por ejemplo Active Directory CSV generator tool. Esta
herramienta adems cuenta con utilidades para revisar ciertas opciones de nuestro AD.