Solución
Podemos comenzar nuestro script con el esqueleto básico en el que comprobamos que se pasan parámetros, si no se pasan salimos con un mensaje de error y se asignan a variables con un nombre más significativo que nos faciliten comprender el código.

Deberíamos tener encuenta con este tipo de scripts que realizan tareas administrativas es que deberíamos ejecutarlo como administrador. Para ello, la forma más sencilla si queremos hacerlo desde la consola de comandos es lanzar la consola de comandos como administrador.

La otra opción es pulsar con el botón secundario sobre el icono del script desde la interfaz gráfica de usuario y seleccionar la opción de ejecutar como administrador. El problema de esta segunda opción es que no le podemos pasar parámetros.
El comando net es el comando que vamos a utilizar para gestionar cuentas de usuario y grupos. Como este comando es importante, vamos a hacernos con él antes de ponernos con el script.
Vamos a echar un vistazo a las opciones diposnibles del comando net.

Nos vamos a centrar en la opción USER que nos va a permitir gestionar cuentas de usuario en el equipo.
Para consultar ayuda sobre la opción USER ejecutamos NET HELP USER.

Si nos fijamos, se proporcionan distintas formas de utilizar el comando NET USER. La opción que nos interesa ahora mismo es la de crear un nuevo usuario, es decir la que tiene /ADD (añadir).
Según la sintaxis del comando se debe proporcionar:
- Nombre del usuario.
- Contraseña del usuario. Aquí podemos elegir entre pasarle una contraeña o un * ({ valor1 | valor2 … | valor N} es la forma en la que se indica que es obligatorio este valor, pero que puedes elegir entre varias opciones separados por el caracter |).
- /ADD. Con esto indicamos que queremos añadir un usuario.
- Opciones. Las opciones son opcionales (aparecen entre corchetes en la sintaxis). Sin embargo, nosotros tendremos que utilizar una de ellas: la que configure la cuenta de usuario para que el usuario tenga que cambiar la contraseña en el primer inicio de sesión).
La opción en concreto es la siguiente, que está más abajo en la ayuda de la opción User.

Vamos a crear una cuenta de usuario, para hacernos con la sintaxis del comando. En este caso, crearemos la cuenta rosaaf.

Vamos a mostrar información sobre la cuenta de rosaaf. Para ello, utilizaremos otra de las formas de net user. En este caso solo le pasaremos por parámetro el nombre de la cuenta de usuario para la que queremos mostrar información en pantalla.

¿Sabes crear un grupo?
Para crear un grupo también utilizaremos el comando net, pero en este caso utilizaremos la opción localgroup.

Vamos a consultar la ayuda de la opción localgroup.

Básicamente tenemos tres formas distintas de usar net localgroup.
- Consultar información de un grupo local en el equipo.
- Añadir o borrar un grupo local del equipo.
- Añadir o borrar usuario o grupos de un grupo local del equipo.
Para este script nos interesan la 2 y la 3.
Si querems añadir un grupo local del equipo, tendremos que pasar por parámetro, según la sintaxis, el nombre del grupo seguido de la opción /ADD. Podemos añadir comentarios si queremos, pero es opcional.
Vamos a probarlo para comprobar que funciona como esperamos. Para ello vamos a crear el grupo python.

Vamos a utilizar la priera forma del comando net localgroup para mostrar información del grupo recién creado.

Para añadir un usuario a un grupo local utilizamos la tercer forma de usar net localgroup. Vamos a añadir el usuario rosaaf al grupo python.

Vamos a comprobar si se ha añadido el usuario correctamente al grupo. Para ello, utilizamos la primera forma de net localgroup.

El Script
Ya sabemos crear usuarios, grupos locales y añadir usuarios a grupos locales. Ahora podemos realizar nuestro script.





Si volvemos a ejecutar el script con el mismo grupo pero con otro usuario, nos mostrará algún mensaje de error al tratar de crear un grupo local que ya existe. Sin embargo, funciona como se esperaba.

Propuesta: Trata de evitar que se cree un grupo que ya existe.
Si ejecutamos el script una segunda vez con un curso que ya hemos utilizado previamente, nos mostrará un mensaje de error porque tratará de crear un grupo que ya existe.

La solución estaría en comprobar el ERRORLEVEL que proporciona el comando NET LOCALGROUP %group% /ADD cuando el grupo ya existe.

Otra opción sería comprobar si existe el directorio del curso, que solo debería existir si existe al grupo.


Evitando que se muestren mensajes en pantalla
Si nos fijamos, ahora no se muestra el error. Sin embargo, se muestra información sobre el grupo que se ha pasado por parámetro y eso no es lo que queríamos.
Esto se debe a que cuando ejecutamos comandos, aunque sea para comprobar que el usuario o el gurpo existe, estos comandos muestran información en pantalla que no es relevante o que no queremos mostrar al usuario. La forma más sencilla de evitar qiue esta información se muestre en pantalla sería redirigir la salida de dichos comandos a un fichero auxiliar. Para ello utilizamos una redirección simple o doble en función de si queremos mantener la información en el fichero o sobrescribirla.
En este caso la información de salida de los comandos nos da igual, no queremos mantenerla. Por tanto, deberíamos redirigir la salida de dichos comandos en un fichero de basura. Por ejemplo, podríamos llamarlo basura.log.
Una vez termine el script, estaría bien borrar dicho fichero si existe, para evitar dejar un fichero con basura en el directorio actual.

E·n las líneas 15 y 16 redirigimos la salida estándar al fichero basura.log, porque no nos interesa dicha salida ni queremos que se muestre.
Por último, en la línea 25 como no queremos dejar basura, si existe el fichero basura.log entonces lo borramos.

Fichero NUL
Aunque esta forma de trabajar está bien, existe un fichero especial del sistema que permite redirigir información que no vamos a querer y que no se guardará en ningún sitio. Este fichero es el fichero NUL.
Así que vamos a utilizar el fichero especial NUL para enviar los mensajes que no queremos que se muestren en pantalla.
Al final, podemos comprobar tanto si existe el usuario y el grupo y crearlos solo si no existen.

Vamos a ver si funciona el script como esperamos. Por ejemplo, vamos a tratar de insertar al usuario marinapg, que ya existe en nuestro sistema, en el curso Java, cuyo grupo ya existe en el sistema.
Comprobamos que el usuario ya existe con el comando net user seguido del nombre del usuario para el que queremos obtener información.

Ahora vamos a mostrar información del grupo Java, para que veamos que existe y que marinapg no pertenece a él.

Ejecutamos el Script y comprobamos como ha funcionado correctamente.

Con esta versión del script, ya no se muestran mensajes de error en caso de que ya exista el usuario y el grupo. Si no queremos que se muestre ningún mensaje podemos redireccionar los mensajes a un fichero de log, tanto los de error como los mensajes de salida de los comandos, así como información extra que consideremos importante del propio script.
