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.
essayer
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members
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
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:
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.
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
À l'aide de PowerShell et du shell de gestion ActiveRoles gratuit de Quest Software pour Active Directory, vous pouvez utiliser:
(Get-QADGroup "GroupName"). Membres
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
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.
Pour afficher les membres du UserGroup1
essayez:
dsquery group -name UserGroup1 | dsget group -members | dsget user -display