Automatizar la creación de usuarios de Active Directory con New-ADUser

¿Estás cansado de abrir Active Directory (AD) Usuarios y Computadoras (ADUC), hacer clic, cometer errores tipográficos y pasar por el proceso de crear una nueva cuenta de usuario por sexta vez hoy? Si es así, necesitas automatizar el proceso tan común de usar Active Directory para agregar un usuario con PowerShell utilizando el cmdlet New-ADUser!

Es viernes por la noche y una hora antes de que planees irte a casa para el fin de semana. Ha sido una semana ocupada, así que has decidido hacer planes para ver el gran juego con tus amigos más cercanos. Pero, tu jefe se acerca casualmente y pregunta: “¿Recibiste el correo electrónico? ¿Puedes encargarte de esto antes de que termine el día?” Rápidamente abres Microsoft Outlook y, efectivamente, es un correo electrónico del departamento de recursos humanos, con copia a ti por tu gerente, pidiéndote que suministres 400 nuevas cuentas de empleado en Active Directory (AD) antes de que dejes la oficina. Genial. Ahí se va el juego.

Buscas rápidamente en Internet algunas opciones para agilizar la creación de estas cuentas de usuario y descubres que puedes automatizar la provisión de cuentas de AD utilizando la línea de comandos y un cmdlet de PowerShell llamado New-ADUser.

Normalmente, los administradores crean manualmente cuentas de AD utilizando la Active Directory Usuarios y Computadoras snap-in de MMC instalado en tu computadora de escritorio mediante Remote Server Administration Tools (RSAT). Pero crear un usuario de AD de esta manera lleva, en promedio, tres minutos por cuenta de usuario. Crear cuentas de usuario de AD no es un trabajo glamoroso y es propenso a la automatización.

Hay tres formas comunes en que los administradores crean objetos de cuenta de usuario de AD utilizando el cmdlet New-AdUser.

  1. Agregue una cuenta de usuario de Active Directory utilizando los parámetros requeridos y adicionales de cmdlet.
  2. Copie un objeto de usuario de AD existente para crear una nueva cuenta utilizando el parámetro Instance.
  3. Combine el cmdlet Import-Csv con el cmdlet New-ADUser para crear múltiples objetos de usuario de Active Directory utilizando un archivo de valores separados por comas (CSV).

Estas prácticas a veces se pueden combinar para crear una solución más eficiente. Por ejemplo, puede usar las tres opciones para crear una cuenta de AD de plantilla que se pueda copiar utilizando un archivo CSV para generar múltiples cuentas de AD nuevas.

En este artículo, aprenderá cómo utilizar New-AdUser aprovechando cada uno de estos métodos.

Gestione e informe sobre Active Directory, Exchange y Microsoft 365 con ManageEngine ADManager Plus. ¡Descargue la prueba gratuita!

Prerrequisitos/Requisitos

Antes de comenzar a usar el cmdlet New-AdUser, primero deberá asegurarse de cumplir con algunos requisitos previos.

Una vez que cumpla con estos requisitos, ¡estará listo para comenzar!

Creación de una única cuenta de usuario usando el cmdlet New-ADUser

Comencemos creando una sola cuenta de usuario para demostrar cómo funciona New-ADUser a un nivel básico. Verá que New-ADUser no tiene muchos parámetros obligatorios. De hecho, el único parámetro obligatorio es el parámetro Name, pero rara vez se usa solo.

Por lo general, usará muchos parámetros diferentes para crear una cuenta de usuario. Afortunadamente, la mayoría de los parámetros son autoexplicativos y se corresponden bien con lo que ve en ADUC. Como puede ver en el ejemplo a continuación, puede usar fácilmente muchos parámetros. Cada parámetro se correlaciona aproximadamente con un atributo de cuenta de usuario individual.

Tenga en cuenta que estamos usando acentos invertidos en el ejemplo. Esto es solo para evitar una línea única larga con fines de legibilidad.

PS51> New-ADUser `
    -Name "Kevin Sapp" `
    -GivenName "Kevin" `
    -Surname "Sapp" `
    -SamAccountName "kesapp-test" `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -ChangePasswordAtLogon $True `
    -Company "Code Duet" `
    -Title "CEO" `
    -State "California" `
    -City "San Francisco" `
    -Description "Test Account Creation" `
    -EmployeeNumber "45" `
    -Department "Engineering" `
    -DisplayName "Kevin Sapp (Test)" `
    -Country "us" `
    -PostalCode "940001" `
    -Enabled $True

La unidad organizativa (OU) donde se encuentra el objeto de usuario de AD no puede tener un SamAccountName duplicado.

Ahora que la cuenta está creada, confirme que la cuenta se creó utilizando el cmdlet Get-ADUser. A continuación, puede ver que Get-AdUser devuelve algunos atributos comunes para la cuenta de usuario recién creada.

PS51> Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City

DistinguishedName : CN=Kevin Sapp,CN=Users,DC=mylab,DC=local
Enabled           : True
GivenName         : Kevin
Name              : Kevin Sapp
ObjectClass       : user
ObjectGUID        : 3b18338d-b3c7-4d00-a54a-1d3121e1363f
SamAccountName    : kesapp-test
SID               : S-1-5-21-1181311581-1397355964-1468337501-1109
Surname           : Sapp
UserPrincipalName : kesapp-test@mylab.local

Copiando un Objeto de Usuario de AD Existente

Otro método para la creación de cuentas es copiar un objeto de usuario de AD existente y usarlo como plantilla para una nueva cuenta de AD. Hay varios beneficios en este enfoque:

  • Ahorra tiempo al no tener que especificar cada parámetro individualmente
  • Ayuda a estandarizar la creación de cuentas de AD
  • Evita errores humanos causados por la creación manual de cuentas y permite que los empleados en el mismo equipo tengan los mismos atributos personalizados de AD

Para este ejemplo, utilizarás la cuenta recién creada como plantilla (kesapp-test). Quizás necesites crear una nueva cuenta de usuario con los mismos atributos de AD de estado, ubicación, departamento, país y ciudad. Esta nueva cuenta será para el empleado James Brown.

Ten en cuenta que hay una limitación con este enfoque y solo se pueden copiar con este proceso las propiedades de cuenta de AD que se enumeran en el siguiente enlace. Para obtener más información, consulta la página de Microsoft docs sobre Copiar las propiedades de un usuario.

El primer paso es encontrar la cuenta de usuario de Active Directory que se utilizará como plantilla, asegurándose de que todos los atributos a copiar se proporcionen mediante el parámetro Properties. Para hacer eso, use el cmdlet Get-ADUser como se muestra a continuación. Esto simplemente almacena el objeto de usuario de AD en la variable $template_account.

Tenga en cuenta que la segunda línea establece la propiedad UserPrincipalName (UPN) del objeto de plantilla en $null. Esto se recomienda para asegurar que el UPN de la plantilla sea único. Cada cuenta de usuario de AD debe tener un UPN único.

$template_account = Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City
$template_account.UserPrincipalName = $null

Una vez que haya capturado la cuenta de usuario de la plantilla, puede utilizar ese objeto como valor para el parámetro Instance y proporcionar cualquier parámetro específico del usuario para completar los otros atributos como se muestra a continuación.

New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

Ahora debería tener una cuenta para James con todos los atributos de AD permitidos traídos por el objeto de plantilla.

Errores comunes en la plantilla de cuentas de usuario

Un error común con este enfoque es usar el comodín * para el parámetro Properties al capturar el objeto de plantilla. Los administradores hacen esto porque quieren copiar todos los atributos de la cuenta de usuario de una vez. Pero esto no funciona.

Por ejemplo, el siguiente comando generará un error:

$template_account = Get-ADUser -Identity kesapp-test -Properties *
New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -UserPrincipalName '[email protected]' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

El problema con este enfoque es que el atributo UserPrincipalName necesita ser único en todo el Bosque de AD. Por lo tanto, el UPN debería ser sobrescrito en el comando New-ADUser o establecido como nulo en la variable de plantilla (mostrada a continuación).

$template_account.UserPrincipalName = $null

Otra razón por la cual el enfoque de comodines falla es que algunas de las propiedades de AD que están siendo copiadas por el comodín son de solo lectura (propiedad del Administrador de Cuentas de Seguridad).

Permission error when copying AD objects

Creación de nuevas cuentas de usuario con un archivo CSV

Llevar lo aprendido un paso más adelante es leer las cuentas de empleados desde un archivo CSV y usar New-ADUser para crear cuentas de usuario de AD.

Esta solución es utilizada frecuentemente por muchas organizaciones para automatizar la creación de cuentas en conjunción con sistemas de recursos humanos que crean archivos planos con información de incorporación de nuevos empleados.

Supongamos que te han enviado una lista de nuevos empleados en un archivo CSV. Cada fila en el archivo CSV representa una sola fila y tiene las siguientes columnas: FirstName, LastName, Department, State, EmployeeID y Office. La convención de nombres para la cuenta de inicio de sesión del usuario es la inicial del primer nombre del empleado concatenada con el apellido, como ksapp para el empleado Kevin Sapp.

FirstName, LastName, Department, State, EmployeeID, Office, UserPrincipalName, SamAccountName, Password
Micheal, Jordan, NBA, Chicago, 23, Chicago Bulls, mjordan@mylab.local, mjordan, p@ssw0rd1
Lebron, James, NBA, Los Angeles,24, LA Lakers,ljames@mylab.local, ljames, p@ssw0rd2
Dwayne, Wade, NBA, Miami, 13, Miami Heat, dwade@mylab.local, dwade, p@ssw0rd3
$import_users = Import-Csv -Path sample.csv

Una vez que tienes el archivo CSV, utiliza Import-Csv para leer el archivo CSV y capturar cada fila como un objeto único. Luego itera sobre cada una de esas filas pasando los campos apropiados en el archivo CSV a los parámetros esperados de New-ADUser. Puedes ver un ejemplo de esto a continuación.

$import_users | ForEach-Object {
    New-ADUser `
        -Name $($_.FirstName + " " + $_.LastName) `
        -GivenName $_.FirstName `
        -Surname $_.LastName `
        -Department $_.Department `
        -State $_.State `
        -EmployeeID $_.EmployeeID `
        -DisplayName $($_.FirstName + " " + $_.LastName) `
        -Office $_.Office `
        -UserPrincipalName $_.UserPrincipalName `
        -SamAccountName $_.SamAccountName `
        -AccountPassword $(ConvertTo-SecureString $_.Password -AsPlainText -Force) `
        -Enabled $True
}

Gestione e informe sobre Active Directory, Exchange y Microsoft 365 con ManageEngine ADManager Plus. ¡Descargue la prueba gratuita!

Resumen

En esta publicación, aprendió cómo aprovisionar nuevas cuentas de usuario utilizando tres métodos diferentes:

  1. Creación de una cuenta individual
  2. Copiando una cuenta de usuario desde una plantilla
  3. Creando múltiples cuentas mediante un archivo CSV

Estas son formas básicas de aprovisionar nuevos usuarios en su entorno. Estos métodos funcionan muy bien cuando se agrupan mediante la creación de una función y módulo PowerShell. Incluso puede llevar las cosas un paso más allá y crear su propio proceso de automatización utilizando una base de datos SQL u Oracle como origen (en lugar de un archivo CSV). Siéntase libre de aprovechar cada método según sus propios requisitos y casos de uso únicos.

¡Esperemos que esta información le sea útil en caso de apuro! ¡Aprendió una nueva habilidad y pudo ir a la fiesta con sus amigos sin sacrificar su equilibrio entre trabajo y vida personal!

Lecturas Adicionales

Source:
https://adamtheautomator.com/new-aduser/