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