Vraag Opdrachtregel om gebruikers in een Windows Active Directory-groep te vermelden?


Is er een manier om alle gebruikers in een bepaalde Active Directory-groep op te geven?

Ik kan zien wie er in de groep zit door naar toe te gaan Beheer de computer -> Lokale gebruiker / groepen -> groepen en dubbelklikken op de groep.

Ik heb alleen een opdrachtregel nodig om de gegevens op te halen, zodat ik een aantal andere geautomatiseerde taken kan uitvoeren.


123
2017-08-03 17:19


oorsprong




antwoorden:


proberen

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

37
2017-08-03 17:22



U moet waarschijnlijk iets meer doen om leden op te lossen en leden in geneste groepen te dupliceren. - duffbeer703
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members -expand krijgt u de leden in de geneste groepen, hoewel het niet kan helpen met duplicaten, en het geeft u de volledige AD-querytekenreeks voor het lid, niet alleen hun CN. - jonnybot
Commando niet gevonden op Win7 SP1. Ik vermoed dat je RSAT nodig hebt? - Iszi
'dsget' wordt niet herkend als een intern of extern commando, enz. - adolf garlic
@adolfgarlic - stackoverflow.com/questions/8514599/... - bchilders


Hier is een andere manier dan de opdrachtprompt, maar niet zeker hoe automaat je bent, omdat je de uitvoer zou moeten ontleden:

Als groep "global security group" is:

net group <your_groupname> /domain

Als u op zoek bent naar "domein lokale beveiligingsgroep":

net localgroup <your_groupname> /domain

207
2018-01-04 20:11



niet zeker waarom dit werd overstemd ... de uitvoer vereist misschien een beetje ontleden, maar het heeft het voordeel dat het alleen afhankelijk is van hulpprogramma's die deel uitmaken van de basis windows installatie. - G-Wiz
Maar is er een manier om de ingekorte groepsnamen te omzeilen? - deed02392
Dit is geweldig! Werkte een traktatie. - WOPR
Merk op dat dit niet recursief is en geen groepen vermeldt die zich in een groep bevinden. Niet erg handig als je geneste of hiërarchische groepen hebt. - Mark
Dit werkt perfect voor mij (en gaat mooi hand in hand met net user /domain). Bedankt! - xan


Hier is een versie van de DS-opdracht die ik vaker nuttig vond, vooral als u een complexe OU-structuur hebt en niet noodzakelijk de volledige DN-naam van de groep kent.

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

of als je de CN van de groep kent, meestal hetzelfde als de SAM-ID, genoteerd voor het geval er spaties in de naam staan:

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

Zoals vermeld in de opmerkingen, zijn de ds * -opdrachten (dsquery, dsget, dsadd, dsrm) standaard alleen beschikbaar op een domeincontroller. U kunt het pakket Admin Tools echter installeren via de Support Tools op de installatiemedia van Windows Server of download het van de Microsoft Download-site.

U kunt deze vragen ook uitvoeren met PowerShell. PowerShell is al beschikbaar als een installeerbare functie voor Server 2008, 2008 R2 en Windows 7, maar u zult dit wel moeten doen download het WinRM Framework om het te installeren op XP of Vista.

Om toegang te krijgen tot elke AD-specifieke cmdlets in PowerShell doet u dat OOK moet ten minste een van de volgende installaties uitvoeren:


48
2017-08-03 19:09



Ik gebruik de eerste vraag altijd - Jim B
Houd er rekening mee dat u deze opdracht op de domeincontroller moet uitvoeren. - skolima
U NIET DOEN moet dit commando uitvoeren op een domeincontroller. Jij echter DO moet het Admin Support Pack .msi zijn geïnstalleerd dat is opgenomen in de ondersteuningsprogramma's op de Windows 2003 Server CDROM. Of download het van microsoft.com/downloads/en/... - Ryan Fisher


Voor een PowerShell-oplossing waarvoor de Quest AD-invoegtoepassing niet nodig is, probeert u het volgende

Import-Module ActiveDirectory

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

Dit zal ook de geneste groepen opsommen. Als u dit niet wilt, verwijdert u de -recursive schakelaar.


23
2018-03-24 16:41



U hebt gelijk dat de ActiveDirectory-module niet de Quest ActiveRoles AD-module vereist, maar vereist wel dat de RSAT-hulpprogramma's zijn geïnstalleerd en dat uw AD ten minste één DC heeft met de Active Directory-webservice (voor 2008) R2) of de Active Directory Management Gateway-service (voor 2003, 2008 DC's) is geïnstalleerd. Zie mijn antwoord hierboven voor meer informatie en links. - Ryan Fisher


Een zeer eenvoudige manier die werkt op servers en clients:

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

Retourneert 1 als gebruiker zich in groep YOURGROUPNAME bevindt, anders retourneert 0

U kunt dan de% ERRORLEVEL% -waarde gebruiken (0 als gebruiker in groep, 1 indien niet) zoals

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

14
2017-10-08 09:37



De opdracht "net group" zoekt alleen naar het domein (of de domeinstructuur) waar de computer lid van is. Een moderner alternatief is: whoami /groups | find /I /C "YOURGROUPNAME" - DavisNT


Met PowerShell en Quest Software Vrije ActiveRoles Management Shell voor Active Directory kunt u het volgende gebruiken:

(Get-QADGroup "GroupName"). Leden

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


10
2017-08-03 20:51



Ook: Get-QADGroupMember 'GroupName' - Gordon Bell


De antwoorden hier gebruiken dsgeten dsquery werkt alleen op serverversies van Windows omdat die commando's niet op andere versies van Windows worden verzonden (bijvoorbeeld Windows 7). Op machines zonder die commando's kun je de informatie krijgen die je wilt met behulp van de AdFind-opdracht.

Hier is een voorbeeldquery voor het verkrijgen van groepslidmaatschap:

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

7
2018-03-31 10:34



ADFind.exe is een hulpmiddel van derden dat je toch moet installeren. De ds * -opdrachten kunnen worden geïnstalleerd via het pakket Admin Tools. - Ryan Fisher


Hoe kan ik lokale groepen en gebruikers een lijst geven?

Gebruik het volgende powershellscript om de lokale groepen en leden van die groepen te vermelden.

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

Kopieer de bovenstaande tekst naar Kladblok en sla op als filename.ps1. Voer vervolgens het bestand uit. Ik zou de groepen en gebruikers in elke groep moeten weergeven, of je kunt dit gewoon vanuit powershell uitvoeren.


4
2018-01-14 19:12



Ik krijg, cmdlet ForEach-Object at command pipeline position 1. Supply values for the following parameters: en dan in vraagt ​​om input, Process[0] - Mike S


Voor display-leden van de UserGroup1 proberen:

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

3
2017-10-10 00:54



Misschien wil ik u erop wijzen met welk hulpprogramma van CLI u dit zou gebruiken. Ik denk niet dat dit te goed zal werken cmd, om de een of andere reden. - HopelessN00b
@ HopelessN00b: dit werkt in cmd - Pete
@Pete Newp! dsget failed:'Target object for this command' is missing. - HopelessN00b
@ HopelessN00b: ik krijg een foutmelding als UserGroup1 niet bestaat, probeer zoiets als "Accounting *" - Pete