settingsLogin | Registersettings
Es tu primera visita? Te invitamos a visitar nuestra sección de preguntas frecuentes FAQ!
x
Show Menu

Como realizar creacion masiva de usuarios en Directorio Activo desde archivo de excel o csv.

0 votos
Como realizar creacion masiva de usuarios en Directorio Activo desde archivo de excel o csv.
por  

2 Respuestas

+1 voto

El siguiente simple script crea toda la infraestructura de una empresa tipo a partir de la información de los archivos de texto (.txt) con campos separados por comas que son iguales que los .csv (sólo cambia la extensión).

Está elaborado y probado por alumnos, durante el curso 2012-2013, en clases de Implantación de Sistemas Operativos, módulo del primer curso del ciclo formativo Administración Sistemas Informáticos en Red impartido en un centro público de la provincia de Pontevedra (España). Pretende ser un ejemplo del poder que tienen los scripts (y los comandos) para la automatización de tareas.

Explicarlo sería laborioso. Cada uno puede adaptarlo a sus necesidades.

También habría que ajustar más los permisos de las carpetas creadas (Personales, Perfiles y Documentos) con icacls.

Fijarse que:

- El servidor de ficheros es SRV-FW-31 por lo que se complica un poco la creación de las carpetas compartidas. Si fuera SRV-DCFS-31 y el script se ejecutara en el mismo, el script sería más simple.

- Se borran las OUs Usuarios, Grupos y Equipos para evitar mensajes de error si ya existieran.

Se puede ejecutar en una consola (cmd.exe) de cualquier controlador de dominio.

rem Inicio del script

rem -------------------

@echo off

rem Declaración de variables
rem -----------------------------

set srv-dc=\\SRV-DCFS-31
set dominio=dc=zara31,dc=lo
set sufijodom=zara31.lo
set srv-fs=\\SRV-FW-31
set uncPerfiles=%srv-fs%\Perfiles$
set uncPersonales=%srv-fs%\Personales$

rem Borramos UOs por si existieran
rem --------------------------------
dsrm "OU=Usuarios,%dominio%" -subtree -q -noprompt
dsrm "OU=Grupos,%dominio%" -subtree -q -noprompt
dsrm "OU=Equipos,%dominio%" -subtree -q -noprompt

rem Creamos UOs
rem -----------

dsadd ou "OU=Usuarios,%dominio%" -desc "Usuarios por departamentos."
dsadd ou "OU=Grupos,%dominio%" -desc "Grupos de seguridad propios."
dsadd ou "OU=Usuarios,OU=Grupos,%dominio%" -desc "Grupos de seguridad de usuarios."
dsadd ou "OU=Equipos,OU=Grupos,%dominio%" -desc "Grupos de seguridad de equipos."
dsadd ou "OU=Equipos,%dominio%" -desc "Equipos por departamento."

rem Creamos UOs inferiores y Grupos Globales de seguridad
rem ------------------------------------------------------------

for /f "eol=; skip=1 tokens=1-2 delims=," %%i in (departamentos.txt) do (
dsadd ou "OU=%%i,OU=Usuarios,%dominio%" -desc "Cuentas de usuario del %%j"
dsadd ou "OU=%%i,OU=Equipos,%dominio%" -desc "Cuentas de equipo del %%j"

dsadd group "CN=GGU_%%i,OU=Usuarios,OU=Grupos,%dominio%" -samid GGU_%%i -secgrp yes -scope g -desc "Grupo Global usuarios del %%j"
dsadd group "CN=GGE_%%i,OU=Equipos,OU=Grupos,%dominio%" -samid GGE_%%i -secgrp yes -scope g -desc "Grupo Global equipos del %%j"
)

echo "Creando cuentas de equipo"

for /f "eol=; skip=1 tokens=1-2 delims=," %%i in (equipos.txt) do (
dsadd computer "CN=%%i,OU=%%j,OU=Equipos,%dominio%" -samid %%i -memberof "CN=GGE_%%j,OU=Equipos,OU=Grupos,%dominio%" -loc "Departamento %%j" -desc "Equipo del departamento de %%j"
)

rem Creamos carpetas compartidas y las comparto
rem -----------------------------------------------

if %srv-fs% EQU \\%computername% (
rd c:\Compartidas /s /q >NUL 2>NUL
mkdir c:\Compartidas\Personales >NUL 2>NUL
mkdir c:\Compartidas\Perfiles >NUL 2>NUL
mkdir c:\Compartidas\Documentos
net share Personales$=c:\Compartidas\Personales /UNLIMITED /GRANT:Todos,full /REMARK:"Carpeta para carpetas personales"
net share Perfiles$=c:\Compartidas\Perfiles /UNLIMITED /GRANT:Todos,full /REMARK:"Carpeta para perfiles personales"
net share Documentos$=c:\Compartidas\Documentos /UNLIMITED /GRANT:Todos,read /REMARK:"Carpeta para documentos de solo lectura"

) else (
rem También se puede crear un script en NETLOGON para ejecutar en el equipo que haga de servidor de archivos
echo Compartir Personales$, Perfiles$ y Documentos$ en %srv-fs%
Pause

)

rem Creaos script inicio sesión
rem ----------------------------

echo net use L: %srv-fs%\Documentos$ /persistent:no > %srv-dc%\NETLOGON\inicioses.cmd

rem Creamos usuarios a partir de usuarios.txt
rem Nombre,Apellidos,Departamento,Descripción,Clave
rem ------------------------------------------------------------

for /f "eol=; skip=1 tokens=1-5 delims=," %%i in (usuarios.txt) do (
dsadd user "CN=%%i,OU=%%k,OU=Usuarios,%dominio%" -samid %%i -upn "%%i@%sufijodom%" -fn %%i -ln "%%j" -display %%i -pwd %%m -desc "%%l" -title "%%l" -email "%%i@%sufijodom%" -dept %%k -memberof  "CN=GGU_%%k,OU=Usuarios,OU=Grupos,%dominio%" -hmdir %uncPersonales%\%%i -hmdrv Z: -profile %uncPerfiles%\%%i -loscr inicioses.cmd -mustchpwd yes -pwdneverexpires yes -acctexpires never -disabled no

rem Crear carpeta personal
rem --------------------------
mkdir %uncPersonales%\%%i

     rem Le damos control total al usuario
rem ----------------------------------
   icacls %uncPersonales%\%%i /grant %%i:f /T /Q

     rem Si queremos darle posesión de su carpeta al usario:
rem -------------------------------------------------------
     rem icacls %uncPersonales%\%%i /setowner %%i /T
)

echo Ajustar permisos carpeta Personales
Pause

rem Fin del script

rem -----------------

 

Contenido del archivo departamentos.txt:

;departamentos
Direccion, departamento de Direccion
Administracion,departamento de Administracion
Compras,departamento de Compras
Ventas, departamento de Ventas

 

Contenido del archivo equipos.txt:

;equipos
Equipo01,Direccion
Equipo02,Administracion
Equipo03,Compras
Equipo04,Ventas

Contenido del archivo usuarios.txt:

;Nombre,Apellidos,Departamento,Descripción,Clave
Fernando,Lago Casares,Direccion,Director general,abc123.
Ana,García Ortega,Administracion,Administrador sistema,abc123.
Manuel,Pérez Duarte,Compras,Jefe de compras,abc123.
Marina,Barral Fernández,Compras,Departamento de compras,abc123.
Sonia,Carballo Martínez,Ventas,Jefa de Ventas,abc123.
Juan,Conde Rivera,Ventas,Departamento de ventas,abc123.

 

 

Saludos desde Pontevedra.

Gonzalo Couselo Filgueira

por (11 puntos)  
editado por
0 votos

Hola, puedes usar LDIFDE e importar desde un archivo plano (.ldf) que contenga una estructura similar a este ejemplo:

Por cada usuario a crear, hacer esta estructura:

dn:CN=Usuario1 Apellido1,OU=Usuarios,DC=midominio,DC=com
changeType:add
cn:Usuario1 Apellido1
objectClass:user
samAccountName:Usuario1.Apellido1
userPrincipalName:@Usuario1.Apellido1midominio.com
givenName:Usuario1
sn:Apellido1

Finalmente desde línea de comandos ejecutas:   ldifde -i -f ruta_de_mi_Archivo.ldf

por (1.7k puntos)  
editado por
...