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


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

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

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


116
2017-08-03 17:19


Источник




Ответы:


пытаться

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

37
2017-08-03 17:22



Вероятно, вам нужно сделать немного больше, чтобы разрешать членов и дублировать членов во вложенных группах. - duffbeer703
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members -expand получает вас от членов в вложенных группах, хотя это может не помочь с дубликатами, и это дает вам полную строку запроса AD для члена, а не только их CN. - jonnybot
Команда не найдена в Win7 SP1. Я предполагаю, что вам нужен RSAT? - Iszi
«dsget» не распознается как внутренняя или внешняя команда и т. д. - adolf garlic
@adolfgarlic - stackoverflow.com/questions/8514599/... - bchilders


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

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

net group <your_groupname> /domain

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

net localgroup <your_groupname> /domain

201
2018-01-04 20:11



не знаю, почему это было приостановлено ... выход может потребовать небольшого разбора, но он имеет то преимущество, что зависит только от утилит, которые являются частью базовой установки Windows. - G-Wiz
Но есть ли способ обрезать имена усеченных групп? - deed02392
Отлично! Работал. - WOPR
Обратите внимание, что это не рекурсивно и не отображает группы, которые находятся в группе. Не очень полезно, если у вас есть вложенные или иерархические группы. - Mark
Это отлично работает для меня (и прекрасно идет рука об руку с net user /domain). Благодаря! - xan


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

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

или если вы знаете CN группы, как правило, то же самое, что и идентификатор SAM, указанный в случае, если в названии есть пробелы:

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

Как указано в комментариях, по умолчанию команды ds * (dsquery, dsget, dsadd, dsrm) доступны только на контроллере домена. Однако вы можете установить пакет средств администрирования из инструментов поддержки на установочном носителе Windows Server или загрузить с сайта загрузки Microsoft.

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

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


46
2017-08-03 19:09



Я использую первый запрос все время - Jim B
Имейте в виду, что вам нужно запустить эту команду на контроллере домена. - skolima
Вы НЕ должны выполнить эту команду на контроллере домена. Однако вы ДЕЛАТЬ необходимо установить пакет поддержки администратора .msi, который включен в инструменты поддержки на компакт-диске Windows 2003 Server. Или загрузить его из microsoft.com/downloads/en/... - Ryan Fisher


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

Import-Module ActiveDirectory

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

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


23
2018-03-24 16:41



Вы правы, что для модуля ActiveDirectory не требуется оснастка AD Quest Quest Active Roles, но для этого требуется, чтобы у вас были установлены инструменты RSAT, и что ваш AD имеет хотя бы один DC с веб-службой Active Directory (для 2008 года R2) или Служба шлюза управления Active Directory (для DC, 2003, 2008). См. Мой ответ выше для деталей и ссылок. - Ryan Fisher


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

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

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

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

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

14
2017-10-08 09:37



Команда «net group» выполняет поиск только домена (или дерева доменов), к которому подключен компьютер. Более современная альтернатива: whoami /groups | find /I /C "YOURGROUPNAME" - DavisNT


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

(Get-QADGroup "GroupName").

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


10
2017-08-03 20:51



Также: Get-QADGroupMember 'GroupName' - Gordon Bell


Ответы здесь используются dsgetа также dsquery будет работать только на серверных версиях Windows, поскольку эти команды не отправляются на другие версии Windows (например, Windows 7). На машинах без этих команд вы можете получить нужную информацию, используя Команда AdFind,

Вот пример запроса для получения членства в группе:

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

7
2018-03-31 10:34



ADFind.exe - инструмент третьей стороны, который вы должны установить в любом случае. Команды ds * устанавливаются через пакет средств администрирования. - Ryan Fisher


Как перечислить локальные группы и пользователей?

Используйте следующий сценарий 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.


4
2018-01-14 19:12



Я получил, cmdlet ForEach-Object at command pipeline position 1. Supply values for the following parameters: а затем запрашивает ввод, Process[0] - Mike S