Belirli bir Active Directory grubundaki tüm kullanıcıları listelemenin bir komut satırı yolu var mı?
Bilgisayarı Yönet -> Yerel Kullanıcı/Gruplar -> Gruplar 'a gidip gruba çift tıklayarak grupta kimlerin olduğunu görebiliyorum .
Sadece veri almak için bir komut satırı yoluna ihtiyacım var, bu yüzden diğer bazı otomatik görevleri yapabilirsiniz.
deneyin
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members
Prompt komutundan başka bir yol, çıktıyı ayrıştırmak zorunda kalacağınızdan nasıl otomatikleştirilebileceğinden emin değilim:
Grup "genel güvenlik grubu" ise:
net group <your_groupname> /domain
"Etki alanı yerel güvenlik grubu" arıyorsanız:
net localgroup <your_groupname> /domain
İşte özellikle karmaşık bir OU yapınız varsa ve grubun tam ayırt edici adını bilmiyorsanız, daha tipik olarak yararlı bulduğum ds komutunun bir sürümü.
dsquery group -samid "Group_SAM_Account_Name" | dsget group -members -expand
veya adda boşluk olması durumunda belirtilen, genellikle SAM Kimliği ile aynı olan grubun CN'sini biliyorsanız:
dsquery group -name "Group Account Name" | dsget group -members -expand
Yorumlarda belirtildiği gibi, varsayılan olarak ds * komutları (dsquery, dsget, dsadd, dsrm) yalnızca bir Etki Alanı Denetleyicisi'nde kullanılabilir. Ancak, Yönetici Araçları paketini Windows Server yükleme ortamındaki Destek Araçları'ndan veya karşıdan yükle Microsoft Yükleme sitesinden yükleyebilirsiniz.
Bu sorguları PowerShell kullanarak da gerçekleştirebilirsiniz. PowerShell zaten Server 2008, 2008 R2 ve Windows 7 için yüklenebilir bir özellik olarak kullanılabilir, ancak XP) üzerine yüklemek için WinRM Framework'ü indirmeniz gerekir. veya Vista.
PowerShell'de AD'ye özgü herhangi bir cmdlet'e erişmek için [~ # ~] ayrıca [~ # ~] aşağıdaki yüklemelerden en az birini gerçekleştirmeniz gerekir:
Quest AD eklentisini gerektirmeyen bir PowerShell çözümü için aşağıdakileri deneyin
Import-Module ActiveDirectory
Get-ADGroupMember "Domain Admins" -recursive | Select-Object name
Bu yuvalanmış grupları da numaralandıracaktır. Bunu yapmak istemiyorsanız, - özyinelemeli anahtarını kaldırın.
Sunucular ve istemciler üzerinde çalışan çok kolay bir yol:
NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%"
Kullanıcı YOURGROUPNAME grubundaysa 1 döndürür, aksi takdirde 0 döndürür
Daha sonra% ERRORLEVEL% değerini (gruptaki kullanıcı 0 ise, 1 değilse) beğenebilirsiniz
IF %ERRORLEVEL%==0 Net Use %LOGONSERVER%\YOURGROUPSHARE
Active Directory için PowerShell ve Quest Yazılımının Ücretsiz ActiveRoles Yönetim Kabuğu'nu kullanarak şunları kullanabilirsiniz:
(Get-QADGroup "GroupName"). Üyeler
Burada dsget
ve dsquery
kullanan yanıtlar, Windows'un diğer Windows sürümlerinde (örneğin Windows 7) gönderilmediğinden, yalnızca Windows sunucu sürümlerinde çalışır. Bu komutları olmayan makinelerde AdFind komut kullanarak istediğiniz bilgileri alabilirsiniz.
Grup üyeliği almak için örnek bir sorgu:
AdFind.exe -default -f name="Domain Admins" member -list
Yerel gruplar ve kullanıcılar nasıl listelenir?
Yerel grupları ve bu grupların üyelerini listelemek için aşağıdaki powershell komut dosyasını kullanın.
$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
}
Yukarıdaki metni not defterine kopyalayın ve filename.ps1
. Sonra dosyayı çalıştırın. Her gruptaki Grupları ve Kullanıcıları görüntülemeliyim, yoksa bunu powershell'den çalıştırabilirsiniz.
UserGroup1
Deneyin:
dsquery group -name UserGroup1 | dsget group -members | dsget user -display