Obtenga los grupos de Active Directory no truncados del usuario desde la línea de comandos

90

A menudo uso el net usercomando para echar un vistazo a los grupos de AD de un usuario:

net user /DOMAIN <username>

Esto funciona bien, sin embargo, los nombres de los grupos se truncan a unos 20 caracteres. Y en mi organización, la mayoría de los nombres de los grupos son mucho más largos.

¿Alguien conoce alguna forma de obtener grupos de AD no truncados a través de la línea de comando?

Ben
fuente
1
Según la fecha de esta pregunta, supongo que el truncamiento de 20 caracteres ya no es una cosa, ya que ejecutar ese comando devolvió grupos con nombres más grandes. La respuesta a continuación whoami /groupstambién es buena. Pero solo enumera los grupos de usuarios actualmente conectados. Sin embargo, la suplantación y la programación ingeniosa podrían evitar eso;)
Richard Barker
2
Lo ejecuté para un usuario en el dominio de mi organización; El truncamiento de 20 caracteres sigue siendo un problema.
SherlockSpreadsheets
¡Buena pregunta, Aguado!
Bart

Respuestas:

-9

Puede analizar la salida del comando GPRESULT.

aficionado en serie
fuente
68
Sin un ejemplo, esta es una respuesta inútil
qujck
8
Pero es la respuesta inútil correcta ... aparentemente.
Warlord 099
No muestra los grupos de AD. Muestra MUCHAS otras cosas, pero no los grupos AD.
John Rocha
Chicos, en ese momento (preguntado y respondido en 2009), esta puede haber sido la única forma de hacer realmente lo que necesitaba el OP. Observe que menciona el truncamiento después de 20 caracteres en el nombre del grupo.
Richard Barker
@RichardBarker: El truncamiento sigue ocurriendo con NET USER en 2019.
Ross Presser
109

GPRESULTes el comando correcto, pero no se puede ejecutar sin parámetros. /vo la opción detallada es difícil de administrar sin que también se envíe a un archivo de texto. Por ejemplo, recomiendo usar

gpresult /user myAccount /v > C:\dev\me.txt--Asegúrese de que C: \ Dev \ me.txt exista

Otra opción es mostrar solo información resumida que puede ser completamente visible en la ventana de comandos:

gpresult /user myAccount /r

Las cuentas se enumeran bajo el título:

The user is a part of the following security groups
---------------------------------------------------
P. Brian Mackey
fuente
6
Esta debería ser la respuesta
LT
1
Si está buscando una cadena específica que puede usar en findstrlugar de redirigir la salida a un archivo y luego buscar el archivo. Por ejemplo gpresult /user myAccount /r | findstr mySearchString,.
Jesse
2
Cuando ejecuto esto para mi cuenta de usuario, es genial y puedo ver los grupos de seguridad. Cuando lo ejecuto para otra cuenta de usuario, el comando devuelve: El usuario "userNameHere" no tiene datos RSOP.
SherlockSpreadsheets
60

Un post poco rancio, pero pensé qué diablos. ¿"Whoami" satisface tus necesidades?

Me acabo de enterar hoy (de la misma búsqueda en Google que me trajo aquí, de hecho). Windows ha tenido una herramienta whoami desde XP (parte de un kit de herramientas adicional) y se ha incorporado desde Vista.

whoami /groups

Enumera todos los grupos de AD para el usuario actualmente conectado. Sin embargo, creo que requiere que inicie sesión como ese usuario, por lo que esto no ayudará si su caso de uso requiere la capacidad de ejecutar el comando para mirar a otro usuario.

Solo nombres de grupos:

whoami /groups /fo list |findstr /c:"Group Name:"
Doug
fuente
He estado usando WhoAmIpara obtener mi nombre de usuario durante mucho tiempo solo para darme cuenta HOY de que puedes hacer mucho más con él. Gracias.
MAYO
3
enumerar solo nombres de grupos: for /f "tokens=1 delims=," %g in ('whoami /groups /fo csv /nh') do @echo "%~g"(nota: usar en %%lugar de %en el archivo por lotes)
Lectrode
¡Perfecto! ¡No dudes en ofrecer respuestas nuevas a publicaciones obsoletas!
Bart
5

O puede usar dsquery y dsget :

dsquery user domainroot -name <userName> | dsget user -memberof

Para recuperar membresías de grupos, algo como esto:

Tue 09/10/2013 13:17:41.65
C:\
>dsquery user domainroot -name jqpublic | dsget user -memberof
"CN=Technical Support Staff,OU=Acme,OU=Applications,DC=YourCompany,DC=com"
"CN=Technical Support Staff,OU=Contosa,OU=Applications,DC=YourCompany,DC=com"
"CN=Regional Administrators,OU=Workstation,DC=YourCompany,DC=com"

Aunque no puedo encontrar ninguna evidencia de que haya instalado este paquete en mi computadora, es posible que deba instalar las Herramientas de administración remota del servidor para Windows 7 .

Mal funcionamiento mayor
fuente
1

Manera mucho más fácil en PowerShell:

Get-ADPrincipalGroupMembership <username>

Requisito: la cuenta bajo la que se está ejecutando debe ser miembro del mismo dominio que el usuario de destino, a menos que especifique -Credentialy -Server(no probado).

Además, debe tener instalado el módulo Active Directory Powershell, que como dice @ dave-lucre en un comentario a otra respuesta, no siempre es una opción.

Solo para nombres de grupos, pruebe uno de estos:

(Get-ADPrincipalGroupMembership <username>).Name
Get-ADPrincipalGroupMembership <username> |Select Name
Ross Presser
fuente
1
¡Gran respuesta! Esto funciona, pero no estoy muy seguro de que lo haga más fácil :). Tienes que analizar el resultado para obtener una lista de nombres de grupos (¡me expandiría con eso!). Eso no es un desafío para los expertos en tecnología de PS, ¡pero el salto del lote de DOS a PS nunca es fácil!
hector-j-rivas
0

Use Powershell: Windows Powershell trabajando con Active Directory

Consejo rápido: determinación de la pertenencia a un grupo de AD mediante Powershell

Trigo Mitch
fuente
1
No puede hacer esto sin instalar el módulo Active Directory Powershell (que no siempre es una opción)
Dave Lucre
1
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden dejar de ser válidas si cambia la página enlazada. - De la crítica
Zulan
@Zulan: ¡estás perdiendo el tiempo con una respuesta que tiene 7 años! No solo eso, sino que también parece incongruente, ya que no ha comentado la respuesta aceptada de la misma manera.
Mitch Wheat
@MitchWheat: ¿Notaste el From Reviewenlace al final de su comentario? No comentó sobre la respuesta aceptada porque no la encontró en la revisión.
zondo
Yo hice. Sin embargo, habría pensado que un revisor al menos comprobaría la respuesta aceptada.
Mitch Wheat
0

Basado en la respuesta de P.Brian.Mackey: intenté usar el gpresult /user <UserName> /rcomando, pero solo pareció funcionar para mi cuenta de usuario; para otros usuarios de cuentas me dieron este resultado: The user "userNameHere" does not have RSOP data.

Así que leí este blog, https://blog.thesysadmins.co.uk/group-policy-gpresult-examples.html, y encontré una solución. Tienes que conocer el nombre de la computadora de los usuarios:

gpresult /s <UserComputer> /r /user:<UserName>

Después de ejecutar el comando, debe hacerlo ENTERvarias veces para que el programa se complete porque se detendrá en medio de la salida. Además, los resultados proporcionaron una gran cantidad de datos, incluida una sección para " COMPUTER SETTINGS> Applied Group Policy Objects" y luego " COMPUTER SETTINGS> Security groups" y finalmente " USER SETTINGS> security groups" (esto es lo que estamos buscando con los grupos de AD enumerados con descripciones no truncadas).

Es interesante notar que GPRESULT tenía algunos miembros adicionales que no se veían en el comando NET USER. Además, el orden de clasificación no coincide y no es alfabético. Cualquier organismo que pueda agregar más ideas en los comentarios sería genial.

RESULTADOS: gpresult (with ComputerName, UserName)

Por razones de seguridad, he incluido solo un subconjunto de los resultados de membresía. (36 TOTAL, 12 MUESTRA)

The user is a part of the following security groups
---------------------------------------------------
..
 Internet Email 
 GEVStandardPSMViewers  
 GcoFieldServicesEditors    
 AnimalWelfare_Readers  
 Business Objects   
 Zscaler_Standard_Access    
..
 GCM    
..
 GcmSharesEditors   
 GHVStandardPSMViewers  
 IntranetReportsViewers 
 JetDWUsers     -- (NOTE: this one was deleted today, the other "Jet" one was added)
..
 Time and Attendance Users  
..

RESULTADOS: net user /DOMAIN (with UserName)

Por razones de seguridad, he incluido solo un subconjunto de los resultados de membresía. (23 TOTAL, 12 MUESTRA)

Local Group Memberships  
Global Group memberships    ...
                             *Internet Email       *GEVStandardPSMViewers
                             *GcoFieldServicesEdito*AnimalWelfare_Readers
                             *Business Objects     *Zscaler_Standard_Acce
                             ...
                             *Time and Attendance U*GCM
                             ...
                             *GcmSharesEditors     *GHVStandardPSMViewers
                             *IntranetReportsViewer*JetPowerUsers
The command completed successfully.
SherlockHojas De Cálculo
fuente