командная строка для просмотра списка пользователей в группе windows active directory?

<p>есть ли способ командной строки для перечисления всех пользователей в определенной группе active directory?</p><p>чтобы узнать, кто входит в группу, перейдите в <em>управление компьютером</em> -> <em>локальный пользователь/группы</em> -> <em>группы</em> и дважды щелкните группу ,.</p><p>мне просто нужен способ командной строки для извлечения данных, чтобы я мог выполнять некоторые другие автоматизированные задачи.</p>

<p>пытаться</p><pre><code>dsget group "cn=groupname,dc=domain,dc=name,dc=com" -members </code></pre>

<p>вот еще один способ из командной строки: не уверен, насколько это автоматизируемо, поскольку вам придется анализировать вывод:</p><p>если группа является "глобальной группой безопасности":</p><pre><code>net group <your\_groupname> /domain </code></pre><p>если вы ищете "локальная группа безопасности домена":</p><pre><code>net localgroup <your\_groupname> /domain </code></pre>

<p>вот версия команды ds, которую я нашел более полезной, особенно если у вас сложная структура ou и вы не обязательно знаете полное отличительное имя группы.</p><pre><code>dsquery group -samid "group\_sam\_account\_name" | dsget group -members -expand </code></pre><p>или если вы знаете cn группы, обычно такой же, как идентификатор sam, который указывается в случае пробелов в имени:</p><pre><code>dsquery group -name "group account name" | dsget group -members -expand </code></pre><p>как указано в комментариях, по умолчанию команды ds * (dsquery, dsget, dsadd, dsrm) доступны только на контроллере домена. однако вы можете установить пакет инструментов администратора из средств поддержки на установочный носитель windows server или <a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=c16ae515-c8f4-47ef-a1e4-a8dcbacff8e3&displaylang=en">загрузить его</a> с сайта загрузки microsoft.</p><p>вы также можете выполнить эти запросы с помощью powershell. powershell уже доступен в качестве устанавливаемой функции для server 2008, 2008 r2 и windows 7, но вам нужно <a href="http://support.microsoft.com/kb/968930">загрузить winrm framework</a> , чтобы установить его на xp) или виста.</p><p>чтобы получить доступ к любым специфичным для ad командлетам в powershell, вам <em> [~ # ~] также [~ # ~]</em> необходимо выполнить хотя бы одну из следующих установок:</p><ul> <li>для клиентов win 7 и 2008 r2 вы можете установить <a href="http://technet.microsoft.com/en-us/library/ee449475%28ws.10%29.aspx">инструменты удаленного администрирования сервера</a> . rsat также <em> требуется</em> что вы установили функцию веб-служб active directory на свои <strong> server 2008 r2 </strong> контроллеры домена, или <a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=008940c6-0296-4597-be3e-1d24c1cf0dda&displaylang=en">служба шлюза управления active directory</a> для любых <strong> контроллеров домена 2003/2008 </strong>.</li> <li>для любого клиента xp или выше) загрузите и установите <a href="http://www.quest.com/powershell/activeroles-server.aspx">командная консоль quest activeroles для active directory</a> . инструменты quest не требуют каких-либо дополнительных изменений в ваших контроллерах домена.</li> </ul>

<p>для решения powershell, для которого не требуется надстройка quest ad, попробуйте следующее</p><pre><code>import-module activedirectory get-adgroupmember "domain admins" -recursive | select-object name </code></pre><p>это будет перечислять и вложенные группы. если вы не хотите этого делать, удалите переключатель <em>- - recursive</em>.</p>

<p>очень простой способ, который работает на серверах и клиентах:</p><pre><code>net group "yourgroupname" /domain | find /i /c "%username%" </code></pre><p>возвращает 1, если пользователь находится в группе yourgroupname, иначе вернет 0</p><p>затем вы можете использовать значение% errorlevel% (0, если пользователь в группе, 1, если нет), например</p><pre><code>if %errorlevel%==0 net use %logonserver%\yourgroupshare </code></pre>

<p>используя powershell и бесплатную командную консоль activeroles для active directory от quest software, вы можете использовать:</p><p><strong> (get-qadgroup "groupname"). члены </strong></p><p> <a href="http://www.quest.com/powershell/activeroles-server.aspx">http://www.quest.com/powershell/activeroles-server.aspx</a> </p>

<p>здесь ответы с использованием <code>dsget</code> и <code>dsquery</code> будут работать только на серверных версиях windows, поскольку эти команды не поставляются в других версиях windows (например, windows 7). на машинах без этих команд вы можете получить необходимую информацию, используя <a href="http://www.joeware.net/freetools/tools/adfind/">команда adfind</a> .</p><p>вот пример запроса для получения членства в группе:</p><pre><code>adfind.exe -default -f name="domain admins" member -list </code></pre>

<p>как составить список локальных групп и пользователей?</p><p>используйте следующий скрипт powershell, чтобы перечислить локальные группы и членов этих групп.</p><pre><code>$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 } </code></pre><p>скопируйте приведенный выше текст в блокнот и сохраните как <code>filename.ps1</code>. затем запустите файл. я должен отобразить группы и пользователей в каждой группе, или вы можете просто запустить это из powershell.</p>

<p>для отображения членов <code>usergroup1</code> пытаться:</p><pre><code>dsquery group -name usergroup1 | dsget group -members | dsget user -display </code></pre>