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

Получить список групп AD, членом которых является пользователь

Предположим, у меня есть идентификатор пользователя в Active Directory. Я хотел бы получить список всех групп AD, членом которых является данный пользователь. Как я могу сделать это из командной строки Windows?

Я пробовал следующее:

dsget user "DC=jxd123" -memberof

Ошибка:

dsquery failed:'-memberof' is an unknown parameter.
type dsquery /? for help.

Или с сетевой пользователь команда ...

net user /domain username

Одна строка, модули не требуются, использует текущего зарегистрированного пользователя $ ($ env: username), запускается с других компьютеров Windows:

(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf

Одержимость этой статьи на vbs / powershell: http://technet.microsoft.com/en-us/library/ff730963.aspx

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

Import-Module ActiveDirectory
(Get-ADUser userName –Properties MemberOf | Select-Object MemberOf).MemberOf

Укороченная версия

(Get-ADUser userName –Properties MemberOf).MemberOf

Нашел хороший ресурс:

http://social.technet.microsoft.com/wiki/contents/articles/2195.active-directory-dsquery-commands.aspx

Вот как это сделать из командной строки Windows:

dsquery user -samid jxd123 | dsget user -memberof | dsget group -samid

Если вам нужно увидеть свои группы, есть whoami /groups:

Отображает группы пользователей, к которым принадлежит текущий пользователь.

Преимущество этой команды перед net user /domain username заключается в том, что неявное членство в группах также отображается с whoami.

PowerShell:

Get-ADPrincipalGroupMembership -Identity jdoe | Format-Table -Property name

Другой подход: сценарий PowerShell, который перечисляет все неявное членство в группах из токена учетной записи Windows. Работает в ограниченной системе.

$token = [System.Security.Principal.WindowsIdentity]::GetCurrent() 
ForEach($group in $token.Groups){
    $group.Translate([System.Security.Principal.NTAccount])
}
dsquery user -samid "user id" | dsget user -memberof > userid_memberof.txt
$ADUser = Read-Host "Provide the AD User account"
Get-ADPrincipalGroupMembership -Identity $ADUser | Sort-Object name | Format-Table -Expand name

adfind - еще один отличный инструмент для такого рода вещей. Это бесплатный инструмент от MVP Джо Ричардса.

http://www.joeware.net/freetools/tools/adfind/

Вы можете использовать один из кратких

adfind -sc u:username memberof

Эта версия PowerShell возвращает только имена групп AD, а не DN группы. Вывод «select-object» можно легко передать по конвейеру в CSV или тестовый файл.

(Get-ADUser ExampleUser –Properties MemberOf).memberof | Get-ADGroup | Select-Object name

Powershell дает красивый и чистый вывод.

(get-aduser USER -Properties MemberOf | select MemberOf).MemberOf | % {$_.split(",")[0].replace("CN=","")}

Вот решение для поиска всех доменов в данном домене (при условии правильного разрешения для каждого домена):

# provide the logon name here:
$user="alice"
$allGroups=@()

foreach ( $d in (Get-ADForest example.net).domains ) { Write-Output "Looking up $user in domain $d"; $allGroups += Get-ADPrincipalGroupMembership $user -ResourceContextServer $d }

$allGroups | ft name,GroupScope,distinguishedName -AutoSize

С помощью Get-ADPrincipalGroupMembership

Попробуй это:

gpresult -V /user blah