Pregunta ¿Línea de comando para listar usuarios en un grupo de Active Directory de Windows?


¿Hay una forma de línea de comandos para enumerar a todos los usuarios en un grupo particular de Active Directory?

Puedo ver quién está en el grupo yendo a Administrar la computadora -> Usuarios / Grupos Locales -> Los grupos y doble clic en el grupo.

Solo necesito una forma de línea de comandos para recuperar los datos, por lo que puedo hacer algunas otras tareas automatizadas.


123
2017-08-03 17:19


origen




Respuestas:


tratar

dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members

37
2017-08-03 17:22



Probablemente deba hacer un poco más para resolver miembros y duplicar miembros en grupos anidados. - duffbeer703
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members -expand obtiene los miembros en los grupos anidados, aunque puede que no ayude con los duplicados, y le proporciona la cadena de consulta AD completa para el miembro, no solo su CN. - jonnybot
Comando no encontrado en Win7 SP1. Supongo que necesita RSAT instalado? - Iszi
'dsget' no se reconoce como un comando interno o externo, etc. - adolf garlic
@adolfgarlic - stackoverflow.com/questions/8514599/… - bchilders


Aquí hay otra forma desde el símbolo del sistema, sin estar seguro de cuán automatizable, ya que tendría que analizar la salida:

Si el grupo es "grupo de seguridad global":

net group <your_groupname> /domain

Si busca "grupo de seguridad local de dominio":

net localgroup <your_groupname> /domain

207
2018-01-04 20:11



no estoy seguro de por qué esto fue votado a la baja ... la salida puede requerir un pequeño análisis, pero tiene la ventaja de depender solo de las utilidades que forman parte de la instalación de Windows. - G-Wiz
Pero, ¿hay alguna manera de evitar los nombres de grupo truncados? - deed02392
¡Esto es genial! Trabajó un regalo. - WOPR
Tenga en cuenta que esto no es recursivo y no enumera los grupos que están en un grupo. No es muy útil si tiene grupos anidados o jerárquicos. - Mark
Esto funciona perfectamente para mí (y va muy bien de la mano con net user /domain). ¡Gracias! - xan


Aquí hay una versión del comando ds que encontré más útil, especialmente si tiene una estructura de unidad organizativa compleja y no necesariamente conoce el nombre completo del grupo.

dsquery group -samid "Group_SAM_Account_Name" | dsget group -members -expand

o si conoce el CN ​​del grupo, generalmente el mismo que el ID de SAM, citado en caso de que haya espacios en el nombre:

dsquery group -name "Group Account Name" | dsget group -members -expand

Como se indica en los comentarios, de forma predeterminada, los comandos ds * (dsquery, dsget, dsadd, dsrm) solo están disponibles en un controlador de dominio. Sin embargo, puede instalar el paquete de herramientas de administración desde las herramientas de soporte en el medio de instalación de Windows Server o Descargalo desde el sitio de descarga de Microsoft.

También puede realizar estas consultas utilizando PowerShell. PowerShell ya está disponible como una característica instalable para Server 2008, 2008 R2 y Windows 7, pero deberá descargar el marco de WinRM para instalarlo en XP o Vista.

Para obtener acceso a cualquier cmdlets específicos de AD en PowerShell, ADEMÁS necesita realizar al menos una de las siguientes instalaciones:


48
2017-08-03 19:09



Uso la primera consulta todo el tiempo. - Jim B
Tenga en cuenta que debe ejecutar este comando en el controlador de dominio. - skolima
Tú NO HAGA Tiene que ejecutar este comando en un controlador de dominio. Sin embargo tu HACER es necesario tener instalado el paquete de soporte de administración .msi que se incluye en las herramientas de soporte en el CDROM de Windows 2003 Server. O descargalo de microsoft.com/downloads/en/… - Ryan Fisher


Para una solución PowerShell que no requiera el complemento Quest AD, pruebe lo siguiente

Import-Module ActiveDirectory

Get-ADGroupMember "Domain Admins" -recursive | Select-Object name

Esto enumerará los grupos anidados también. Si no desea hacerlo, elimine el -recursivo cambiar.


23
2018-03-24 16:41



Tiene razón en que el módulo ActiveDirectory no requiere el complemento AD ActiveRoles de Quest, pero requiere que tenga las herramientas RSAT instaladas y que su AD tenga al menos un DC con cualquiera de los Servicios web de Active Directory (para 2008 R2) o el servicio Active Directory Management Gateway (para 2003, 2008 DC) instalado. Ver mi respuesta anterior para más detalles y enlaces. - Ryan Fisher


Una forma muy fácil que funciona en servidores y clientes:

NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%"

Devuelve 1 si el usuario está en el grupo YOURGROUPNAME, de lo contrario devolverá 0

Luego puede usar el valor% ERRORLEVEL% (0 si el usuario está en el grupo, 1 si no) como

IF %ERRORLEVEL%==0 NET USE %LOGONSERVER%\YOURGROUPSHARE

14
2017-10-08 09:37



El comando "grupo de red" solo busca el dominio (o árbol de dominio) donde se une la computadora. Una alternativa más moderna es: whoami /groups | find /I /C "YOURGROUPNAME" - DavisNT


Usando el Shell de administración gratuito de ActiveRoles de PowerShell y Quest Software para Active Directory, puede usar:

(Get-QADGroup "GroupName"). Miembros

http://www.quest.com/powershell/activeroles-server.aspx


10
2017-08-03 20:51



También: Get-QADGroupMember 'GroupName' - Gordon Bell


Las respuestas aquí usando dsgety dsquery solo funcionará en versiones de servidor de Windows, ya que los comandos no se envían en otras versiones de Windows (por ejemplo, Windows 7). En las máquinas sin esos comandos, puede obtener la información que desea usando el Comando AdFind.

Aquí hay una consulta de ejemplo para obtener la pertenencia a un grupo:

AdFind.exe -default -f name="Domain Admins" member -list

7
2018-03-31 10:34



ADFind.exe es una herramienta de terceros que tiene que instalar de todos modos. Los comandos ds * se pueden instalar a través del paquete de herramientas de administración. - Ryan Fisher


¿Cómo listar grupos y usuarios locales?

Use el siguiente script de powershell para enumerar los grupos locales y los miembros de esos grupos.

$server="YourServerName"
$computer = [ADSI]"WinNT://$server,computer"

$computer.psbase.children | where { 

$_.psbase.schemaClassName -eq 'group' } | foreach {
    write-host $_.name
    write-host "------"
    $group =[ADSI]$_.psbase.Path
    $group.psbase.Invoke("Members") | foreach {
$_.GetType().InvokeMember("Name", 'GetProperty', 

$null, $_, $null)}
    write-host
}

Copie el texto de arriba en el bloc de notas y guárdelo como filename.ps1. A continuación, ejecute el archivo. Debería mostrar los Grupos y Usuarios en cada grupo, o simplemente puede ejecutar esto desde powershell.


4
2018-01-14 19:12



Yo obtengo, cmdlet ForEach-Object at command pipeline position 1. Supply values for the following parameters: y luego en pide entrada, Process[0] - Mike S