Cómo crear usuarios en Directorio Activo con PowerShell desde un archivo
How to create AD users by powershell from file
Este es un script básico para crear masivamente usuarios en AD desde un archivo .csv con los datos necesarios para darlos de alta..
A continuación listo las propiedades que podemos incluir en nuestro script (puedes consultarlo poniendo help New-ADUser en PS). En la lista podemos ver el nombre de la propiedad seguido del tipo de dato que acepta la propiedad:
[-Name] <String>
[-AccountExpirationDate <DateTime>]
[-AccountNotDelegated <Boolean>]
[-AccountPassword <SecureString>]
[-AllowReversiblePasswordEncryption <Boolean>]
[-AuthenticationPolicy <ADAuthenticationPolicy>]
[-AuthenticationPolicySilo <ADAuthenticationPolicySilo>]
[-AuthType {Negotiate | Basic}]
[-CannotChangePassword <Boolean>]
[-Certificates <X509Certificate[]>]
[-ChangePasswordAtLogon <Boolean>]
[-City <String>]
[-Company <String>]
[-CompoundIdentitySupported <Boolean>]
[-Country <String>]
[-Credential <PSCredential>]
[-Department <String>]
[-Description <String>]
[-DisplayName <String>]
[-Division <String>]
[-EmailAddress <String>]
[-EmployeeID <String>]
[-EmployeeNumber <String>]
[-Enabled <Boolean>]
[-Fax <String>]
[-GivenName <String>]
[-HomeDirectory <String>]
[-HomeDrive <String>]
[-HomePage <String>]
[-HomePhone <String>]
[-Initials <String>]
[-Instance <ADUser>]
[-KerberosEncryptionType {None | DES | RC4 | AES128 | AES256}]
[-LogonWorkstations <String>]
[-Manager <ADUser>]
[-MobilePhone <String>]
[-Office <String>]
[-OfficePhone <String>]
[-Organization <String>]
[-OtherAttributes <Hashtable>]
[-OtherName <String>]
[-PassThru]
[-PasswordNeverExpires <Boolean>]
[-PasswordNotRequired <Boolean>]
[-Path <String>]
[-POBox <String>]
[-PostalCode <String>]
[-PrincipalsAllowedToDelegateToAccount <ADPrincipal[]>]
[-ProfilePath <String>]
[-SamAccountName <String>]
[-ScriptPath <String>]
[-Server <String>]
[-ServicePrincipalNames <String[]>]
[-SmartcardLogonRequired <Boolean>]
[-State <String>]
[-StreetAddress <String>]
[-Surname <String>]
[-Title <String>]
[-TrustedForDelegation <Boolean>]
[-Type <String>]
[-UserPrincipalName <String>]
[-Confirm]
[-WhatIf]
[<CommonParameters>]
Tomamos como ejemplo la primera propiedad y vemos:
[-Name](propiedad) <String>(tipo de dato, en este caso String)
Lo primero que tenemos que hacer es importar el modulo de Directorio Activo
Import-Module ActiveDirectory
Aunque sea un script básico, a mi me gusta definir la ruta y el archivo de origen en una variable. En este caso vamos a usar un archivo .csv como origen de los datos que necesitaremos para crear los usuarios.
Empezamos indicando cual será el directorio de origen y para este script elegiremos que el directorio sea el mismo donde se encuentra nuestro archivo .ps1. Para ello usaremos la variable automática de powershell $PSScriptRoot y lo meteremos en la variable $directorio_origen:
$directorio_origen = $PSScriptRoot
Y ahora le decimos cómo se llamará el archivo de donde cargaremos los datos y lo meteremos en la variable $archivo_origen concatenado con un "+" el valor de la variable $directorio_origen con un string con el nombre que queramos ponerle al archivo precedido de "\" para que complete la dirección del archivo:
$archivo_origen = $directorio_origen+"\users.csv"