Существует ли способ с помощью командной строки перечислить всех пользователей в определенной группе Active Directory?
Я могу посмотреть, кто входит в группу, перейдя в Manage Computer --> Local User / Groups --> Groups и дважды щелкнув группу.
Мне просто нужен способ получения данных из командной строки, чтобы я мог выполнять другие автоматизированные задачи.
Здесь'ы еще один способ из командной строки, не знаю, как будто автоматизируемой поскольку вам придется парсить вывод:
Если группа является "глобальной безопасности группы":
net group <your_groupname> /domain
Если вы ищете "и домен локальной безопасности группы":
net localgroup <your_groupname> /domain
Вот версия команды ds, которую я нашел более полезной, особенно если у вас сложная структура OU и вы не всегда знаете полное отличительное имя группы.
dsquery group -samid "Group_SAM_Account_Name" | dsget group -members -expand
или если вы знаете CN группы, обычно такой же, как и SAM ID, взятый в кавычки на случай, если в имени есть пробелы:
dsquery group -name "Group Account Name" | dsget group -members -expand
Как указано в комментариях, по умолчанию команды ds* (dsquery, dsget, dsadd, dsrm) доступны только на контроллере домена. Однако вы можете установить пакет Admin Tools из Support Tools на установочном носителе Windows Server или загрузить его с сайта Microsoft Download.
Вы также можете выполнять эти запросы с помощью PowerShell. PowerShell уже доступен в качестве устанавливаемой функции для Server 2008, 2008 R2 и Windows 7, но для установки на XP или Vista вам потребуется загрузить WinRM Framework.
Чтобы получить доступ к любым командам, специфичным для AD, в PowerShell, вам ALSO потребуется выполнить хотя бы одну из следующих установок:
Для решения PowerShell, который не'т требует квеста объявление надстройки, попробуйте следующее
Import-Module ActiveDirectory
Get-ADGroupMember "Domain Admins" -recursive | Select-Object name
Это перечисление вложенных групп, а также. Если вы Don'т хотите сделать так, удалить -рекурсивные переключатель.
Очень простой способ, который работает на серверах и клиентах:
NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%"
Возвращает 1, если пользователь находится в группе YOURGROUPNAME, иначе возвращает 0
Затем вы можете использовать значение переменной %errorlevel% стоимости (или 0, если пользователь в группе 1, если нет) как
IF %ERRORLEVEL%==0 NET USE %LOGONSERVER%\YOURGROUPSHARE
Используя PowerShell и Quest Software's Free ActiveRoles Management Shell for Active Directory, вы можете использовать:
(Get-QADGroup "GroupName").Members.
Ответы здесь через dsget
и поиску
будет работать только на серверных версиях Windows, так как эти команды'ы не'т отгружено на другие версии Windows (например, Windows 7). На машинах без этих команд вы можете узнать нужную вам информацию с помощью команды случае adfind.
Здесь'ы пример запроса на получение членства в группе:
AdFind.exe -default -f name="Domain Admins" member -list
Как посмотреть список локальных пользователей и групп?
Используйте следующий скрипт PowerShell, чтобы получить список местных групп и членов этих групп.
$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
}
Скопировать текст выше в блокнот и сохранить как файл.пс1`. Потом запустить файл. Я должен отображать групп и пользователей в каждой группе, или вы можете просто запустить это с помощью PowerShell.
Для членов дисплей группу usergroup1
попробовать:
dsquery group -name UserGroup1 | dsget group -members | dsget user -display