Назад | Перейти на главную страницу

Командная строка для вывода списка пользователей в группе Windows Active Directory?

Есть ли способ из командной строки перечислить всех пользователей в определенной группе Active Directory?

Я могу увидеть, кто в группе, перейдя в Управление компьютером -> Локальный пользователь / группы -> Группы и дважды щелкните группу.

Мне просто нужен способ получения данных из командной строки, чтобы я мог выполнять некоторые другие автоматизированные задачи.

Вот еще один способ из командной строки, но не уверен, насколько он автоматизирован, поскольку вам придется анализировать вывод:

Если группа - «глобальная группа безопасности»:

net group <your_groupname> /domain

Если вы ищете "локальную группу безопасности домена":

net localgroup <your_groupname> /domain

Вот версия команды ds, которую я нашел более полезной, особенно если у вас сложная структура подразделения и вам не обязательно знать полное отличительное имя группы.

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) доступны только на контроллере домена. Однако вы можете установить пакет средств администрирования из средств поддержки на установочном носителе Windows Server или загрузить с сайта загрузки Microsoft.

Вы также можете выполнять эти запросы с помощью PowerShell. PowerShell уже доступен в качестве устанавливаемого компонента для Server 2008, 2008 R2 и Windows 7, но вам потребуется скачать WinRM Framework установить его на XP или Vista.

Чтобы получить доступ к любым специфичным для AD командлетам в PowerShell, вам нужно: ТАКЖЕ необходимо выполнить хотя бы одну из следующих установок:

пытаться

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

Для решения PowerShell, для которого не требуется надстройка Quest AD, попробуйте следующее

Import-Module ActiveDirectory

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

Это также перечислит вложенные группы. Если вы не хотите этого делать, удалите -рекурсивный переключатель.

Очень простой способ, который работает на серверах и клиентах:

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

Возвращает 1, если пользователь находится в группе YOURGROUPNAME, иначе вернет 0

Затем вы можете использовать значение% ERRORLEVEL% (0, если пользователь в группе, 1, если нет), например

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

Используя PowerShell и бесплатную оболочку ActiveRoles Management Shell для Active Directory от Quest Software, вы можете использовать:

(Get-QADGroup "GroupName"). Члены

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

Ответы здесь с использованием dsget и dsquery будет работать только в серверных версиях 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
}

Скопируйте текст выше в блокнот и сохраните как filename.ps1. Затем запустите файл. Я должен отображать группы и пользователей в каждой группе, или вы можете просто запустить это из PowerShell.

Для отображения участников UserGroup1 пытаться:

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