Problema con cambiarle el nombre a un grupo (vía Batch)

Iniciado por VivaElPirateo, 28 Mayo 2012, 03:17 AM

0 Miembros y 1 Visitante están viendo este tema.

VivaElPirateo

Buenas:

    Intento cambiarle el nombre a un localgroup de Windows Server 2003 a través de un batch.
Me genera error y no logro realizar lo que quiero hacer.

    Dejo el código para que me ayuden, por favor:


:cambiarnombre
echo.

set /p nus=                   Ingrese grupo :
echo.

set /p nux=                   Ingrese NUEVO nombre al grupo :
echo.

net localgroup %nus% /fullname:"%nux%"
echo.
pause
goto grupos



Se agradece cualquier ayuda.

$Edu$

Fijate si lo haces sin poner las comillas en /fullname:"%nux%"

Eleкtro

#2
Parece que solo permite añadir un grupo, eliminar un grupo, o expandir (Añadir usuarios al grupo), Pero no modificar el nombre de un grupo....

Lo que puedes hacer es obtener la lista de los usuarios del grupo, Eliminar el grupo, y crearlo de nuevo con el nombre que quieras, y los usuarios que estaban.

http://technet.microsoft.com/en-us/library/cc725622%28v=ws.10%29.aspx

Cita de: Microsoft<GroupName>
   Specifies the name of the local group to add, expand, or delete.


Además... :
C:\>net localgroup /?
La sintaxis de este comando es:

NET LOCALGROUP
[grupo [/COMMENT:"texto"]] [/DOMAIN]
             grupo {/ADD [/COMMENT:"texto"] | /DELETE}  [/DOMAIN]
             grupo nombre [...] {/ADD | /DELETE} [/DOMAIN]



PD: Prueba a hacerlo desde el gpetid.msc, Si desde ahí tampoco se puede, Olvídate.

Saludos








VivaElPirateo

#3
Gracias socitos!!!!!!!!!!!!

Lo que yo hice ahora para solucionar el problema del cambio de nombre (parece que en realidad no se puede hacer), es darle una solución alternativa:


:cambiarnombre
set /p nus=Ingrese nombre del Grupo al que va a cambiar de nombre:
echo.
set /p nux=ingrese nuevo nombre:
echo.
net group %nus% /delete
net group %nux% /add /domain
echo.
pause
cls
goto grupos


Con esto, borro el grupo exitente (por ponerle un nombre: alfa, y crea otro nuevo grupo llamado beta), pero lo de reintegrar a los usuarios del grupo alfa al beta, eso quedé en tragedia.

:huh:

Eleкtro

copiame el output de este comando (No tengo grupo yo para mirarlo :P):

net LOCALGROUP alfa

Y con un FOR hago el resto.

PD: Si ese comando no lista los miembros del grupo, prueba con otra opcion (NEt /?)...

Saludos








VivaElPirateo

#5
Buenas:

Me imagino que log te refieres a cuando ingresas en línea de comandos y escribes net users, no???

Acá está:

Se llama alfa1 el usuario


Microsoft Windows [Versión 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.

C:\Documents and Settings\Administrador>net localgroup alfa1
Nombre de alias      alfa1
Comentario

Miembros

-------------------------------------------------------------------------------
bullalbo1
johnritter1
panzer1
Se ha completado el comando correctamente.




Eleкtro

Mira a ver si todo está en orden :P, Quizás he cometido algún error pues no puedo probar nada con grupos locales:

Código (dos) [Seleccionar]
@Echo off

set /p del=Ingrese nombre del Grupo al que va a cambiar de nombre:
set /p add=ingrese nuevo nombre:

:: Pasamos la lista d los miembros a un archivo de texto, por si las moscas, para que no se pierda :P
net localgroup "%del%">"%temp%\%del%_usuarios.txt"

:: Obtenemos los usuarios del grupo que queremos borrar, Y los vamos añadiendo al nuevo grupo
For /F "tokens=*" %%a in ('net localgroup "%del%" ^| findstr /V /R "Comentario Miembros ----- Nombre.de.alias"') do (
        REM Echo Comando: net group "%add%" /add "%%a"
net group "%add%" /add "%%a"
)

:: Eliminamos el grupo anterior
net group "%del%" /delete

pause
exit








VivaElPirateo

Con respecto a lo anterior:

Le modifiqué lo de group y lo dejé como localgroup.


@Echo off

set /p del=Ingrese nombre del Grupo al que va a cambiar de nombre:
set /p add=ingrese nuevo nombre:

:: Pasamos la lista d los miembros a un archivo de texto, por si las moscas, para que no se pierda :P
net localgroup "%del%">"%temp%\%del%_usuarios.txt"

:: Obtenemos los usuarios del grupo que queremos borrar, Y los vamos añadiendo al nuevo grupo
For /F "tokens=*" %%a in ('net localgroup "%del%" ^| findstr /V /R "Comentario Miembros ----- Nombre.de.alias"') do (
        REM Echo Comando: net localgroup "%add%" /add "%%a"
net localgroup "%add%" /add "%%a"
)

:: Eliminamos el grupo anterior
net localgroup "%del%" /delete

pause
exit





Me elimina el grupo, pero no me crea nada más.

Este es el log:


Ingrese nombre del Grupo al que va a cambiar de nombre:curajolo.cl
ingrese nuevo nombre: curita123
La sintaxis de este comando es:


NET LOCALGROUP
[nombregrupo [/COMMENT:"texto"]] [/DOMAIN]
              nombregrupo {/ADD [/COMMENT:"texto"] | /DELETE}  [/DOMAIN]
              nombregrupo nombre [...] {/ADD | /DELETE} [/DOMAIN]

Se ha completado el comando correctamente.

Presione una tecla para continuar . . .

Eleкtro

#8
Ya esta, He echo el code testeandolo en una máquina virtual (En mi pc como ya dije, no puedo).

Aqui lo tienes:

Código (dos) [Seleccionar]
@Echo off

:Select
Echo Ingrese nombre del Grupo al que va a cambiar de nombre: | MORE
set /p del=^>^>
If not defined del (goto :select)
Net localgroup "%DEL%" >nul 2>&1 || (Echo. El grupo "%DEL%" no existe! | MORE & Set "Del=" & Goto :Select)

Echo+ & Echo ingrese nuevo nombre: | MORE
set /p add=^>^>
If not defined add (goto :select)

:: Pasamos la lista d los miembros a un archivo de texto, por si las moscas, para que no se pierda :P
net localgroup "%del%">"%temp%\%del%_usuarios.txt"

:: Creamos el nuevo grupo:
net localgroup "%add%" /add >nul

:: Obtenemos los usuarios del grupo que queremos borrar, Y los vamos añadiendo al nuevo grupo
For /F "tokens=*" %%a in ('net localgroup "%del%" ^| findstr /V /R "Comentario Miembros ----- Nombre.de.alias Se.ha.completado"') do (
net localgroup "%add%" /add "%%a" >NUL
)

CLS & Echo+ & Echo [+] Su nuevo grupo: | MORE
Net localgroup "%ADD%" | findstr /V /R "Comentario ----- Se.ha.completado"| MORE
Choice /M "Todo OK?"
If %Errorlevel%==1 (
:: Eliminamos el grupo anterior y el backup de los usuarios.
net localgroup "%del%" /delete >NUL
Del /Q "%temp%\%del%_usuarios.txt"
) ELSE (
:: Mostramos el backup de los usuarios para deshacer los cambios manualmente xD.
notepad "%temp%\%del%_usuarios.txt"
)

exit


Output:


Saludos.









VivaElPirateo

Wow, que maravilla!!!!!!!!!!!!!

Te felicito master!!!!!!!!!!


Después del "Todo OK?" S-N  Se cae el programa.

Lo que no resulta es que el grupo anterior no se borra:

Se crea el nuevo grupo y se traspasan los usuarios de éste al nuevo, pero sigue dejando el grupo antiguo intacto.