Esiste un modo da riga di comando per elencare tutti gli utenti in un particolare gruppo di Active Directory?
Posso vedere chi è nel gruppo andando su Gestisci computer -> tente/gruppi locali -> Gruppi e facendo doppio clic sul gruppo .
Ho solo bisogno di un modo da riga di comando per recuperare i dati, quindi posso fare alcune altre attività automatizzate.
provare
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members
Ecco un altro modo dal comando Prompt, non sono sicuro di quanto sia automatizzabile poiché dovresti analizzare l'output:
Se il gruppo è "gruppo di sicurezza globale":
net group <your_groupname> /domain
Se stai cercando un "gruppo di sicurezza locale di dominio":
net localgroup <your_groupname> /domain
Ecco una versione del comando ds che ho trovato più tipicamente utile, specialmente se hai una struttura OU complessa e non conosci necessariamente il nome distinto completo del gruppo.
dsquery group -samid "Group_SAM_Account_Name" | dsget group -members -expand
o se conosci la CN del gruppo, generalmente uguale all'ID SAM, citato nel caso in cui ci siano spazi nel nome:
dsquery group -name "Group Account Name" | dsget group -members -expand
Come indicato nei commenti, per impostazione predefinita i comandi ds * (dsquery, dsget, dsadd, dsrm) sono disponibili solo su un controller di dominio. Tuttavia, è possibile installare il pacchetto Strumenti di amministrazione dagli Strumenti di supporto sul supporto di installazione di Windows Server o scaricarlo dal sito di download di Microsoft.
È inoltre possibile eseguire queste query utilizzando PowerShell. PowerShell è già disponibile come funzionalità installabile per Server 2008, 2008 R2 e Windows 7, ma è necessario scaricare WinRM Framework per installarlo su XP o Vista.
Per ottenere l'accesso a tutti i cmdlet specifici di Active Directory in PowerShell dovrai [~ # ~] anche [~ # ~] devi eseguire almeno una delle seguenti installazioni:
Per una soluzione PowerShell che non richiede il componente aggiuntivo Quest AD, provare quanto segue
Import-Module ActiveDirectory
Get-ADGroupMember "Domain Admins" -recursive | Select-Object name
Ciò enumera anche i gruppi nidificati. Se non si desidera farlo, rimuovere l'opzione - ricorsiva.
Un modo molto semplice che funziona su server e client:
NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%"
Restituisce 1 se l'utente è nel gruppo YOURGROUPNAME, altrimenti restituirà 0
È quindi possibile utilizzare il valore% ERRORLEVEL% (0 se l'utente nel gruppo, 1 se non) come
IF %ERRORLEVEL%==0 Net Use %LOGONSERVER%\YOURGROUPSHARE
Utilizzando PowerShell e Quest ActiveRoles Management Shell per Active Directory di PowerShell e Quest Software, è possibile utilizzare:
(Get-QADGroup "GroupName"). Membri
Le risposte qui usando dsget
e dsquery
funzioneranno solo su versioni server di Windows poiché tali comandi non vengono forniti su altre versioni di Windows (ad esempio Windows 7). Su macchine senza tali comandi è possibile ottenere le informazioni desiderate utilizzando comando AdFind .
Ecco una query di esempio per ottenere l'appartenenza al gruppo:
AdFind.exe -default -f name="Domain Admins" member -list
Come elencare gruppi e utenti locali?
Utilizzare il seguente script PowerShell per elencare i gruppi locali e i membri di tali gruppi.
$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
}
Copia il testo sopra nel blocco note e salvalo come filename.ps1
. Quindi eseguire il file. Dovrei visualizzare i gruppi e gli utenti in ciascun gruppo, oppure puoi semplicemente eseguirlo da PowerShell.
Per i membri di visualizzazione di UserGroup1
provare:
dsquery group -name UserGroup1 | dsget group -members | dsget user -display