Cerrar
InicioWindows ServerPowerShell: 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!!!!
Exámenes de Certifi
El siguiente capítu

sbuytrago@asirsl.com

18 COMENTARIOS
  • 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

DEJA UN COMENTARIO

Este sitio web utiliza cookies. Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra política de cookies. ACEPTAR

Aviso de cookies
Share This