web-dev-qa-db-fra.com

Ligne de commande pour répertorier les utilisateurs dans un groupe Windows Active Directory?

Existe-t-il un moyen en ligne de commande pour répertorier tous les utilisateurs d'un groupe Active Directory particulier?

Je peux voir qui est dans le groupe en allant à Gérer l'ordinateur -> tilisateur/Groupes locaux -> Groupes et en double-cliquant sur le groupe .

J'ai juste besoin d'un moyen en ligne de commande pour récupérer les données, donc je peux faire d'autres tâches automatisées.

138
Flyer

essayer

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

Voici un autre moyen à partir de l'invite de commandes, je ne sais pas exactement comment automatisable car vous devrez analyser la sortie:

Si le groupe est "groupe de sécurité global":

net group <your_groupname> /domain

Si vous recherchez "groupe de sécurité local de domaine":

net localgroup <your_groupname> /domain
243
asdasddfg

Voici une version de la commande ds que j'ai trouvée plus généralement utile, surtout si vous avez une structure d'unité d'organisation complexe et que vous ne connaissez pas nécessairement le nom distinctif complet du groupe.

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

ou si vous connaissez le CN du groupe, généralement le même que l'ID SAM, cité au cas où il y aurait des espaces dans le nom:

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

Comme indiqué dans les commentaires, par défaut, les commandes ds * (dsquery, dsget, dsadd, dsrm) ne sont disponibles que sur un contrôleur de domaine. Cependant, vous pouvez installer le pack Admin Tools à partir des outils de support sur le support d'installation de Windows Server ou le télécharger à partir du site de téléchargement Microsoft.

Vous pouvez également effectuer ces requêtes à l'aide de PowerShell. PowerShell est déjà disponible en tant que fonctionnalité installable pour Server 2008, 2008 R2 et Windows 7, mais vous devrez télécharger le framework WinRM pour l'installer sur XP ou Vista.

Pour accéder à toutes les applets de commande spécifiques à AD dans PowerShell, vous devrez [~ # ~] également [~ # ~] effectuer au moins une des installations suivantes:

49
Ryan Fisher

Pour une solution PowerShell qui ne nécessite pas le complément Quest AD, essayez ce qui suit

Import-Module ActiveDirectory

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

Cela énumérera également les groupes imbriqués. Si vous ne le souhaitez pas, supprimez le commutateur - - récursif.

25
pk.

Un moyen très simple qui fonctionne sur les serveurs et les clients:

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

Renvoie 1 si l'utilisateur est dans le groupe YOURGROUPNAME, sinon renvoie 0

Vous pouvez ensuite utiliser la valeur% ERRORLEVEL% (0 si l'utilisateur dans le groupe, 1 sinon) comme

IF %ERRORLEVEL%==0 Net Use %LOGONSERVER%\YOURGROUPSHARE
17
deajan

À l'aide de PowerShell et du shell de gestion ActiveRoles gratuit de Quest Software pour Active Directory, vous pouvez utiliser:

(Get-QADGroup "GroupName"). Membres

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

10
Gordon Bell

Les réponses ici utilisant dsget et dsquery ne fonctionneront que sur les versions serveur de Windows car ces commandes ne sont pas livrées sur d'autres versions de Windows (par exemple Windows 7). Sur les machines sans ces commandes, vous pouvez obtenir les informations que vous souhaitez en utilisant commande AdFind .

Voici un exemple de requête pour obtenir l'appartenance à un groupe:

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

Comment répertorier les groupes et utilisateurs locaux?

Utilisez le script powershell suivant pour répertorier les groupes locaux et les membres de ces groupes.

$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
}

Copiez le texte ci-dessus dans le bloc-notes et enregistrez-le sous filename.ps1. Exécutez ensuite le fichier. Je devrais afficher les groupes et les utilisateurs dans chaque groupe, ou vous pouvez simplement l'exécuter à partir de PowerShell.

4
Sysadmin

Pour afficher les membres du UserGroup1 essayez:

dsquery group -name UserGroup1 | dsget group -members | dsget user -display
3
vadim