Как проверить, к каким доменам и группам я принадлежу?

Это относится к Windows 7 и Windows Server 2008 R2, но, вероятно, может относиться к другим версиям.

Вопрос 1 : Как предпочтительно узнать из CLI все домены, к которым принадлежит пользователь (это, вероятно, нетривиально, но каким-то образом это можно сделать)?

Вопрос 2 : Как узнать все группы, членом которых является пользователь, из домена, в который этот пользователь в настоящее время не вошел (при условии, что пользователь знает необходимые учетные данные)?

-3
задан 20 January 2016 в 10:15
4 ответа

Как указал @joeqwerty, пользователь может находиться только в одном домене. Вероятно, вам будет интересно узнать, как настраиваются доверительные отношения между различными доменами / лесами. Инструмент cmdline, который я использую для этого, - nltest

Из-за вложенности групп не существует элегантного способа получить членство пользователя в группе во всех доменах / лесах. Лучшим способом было бы перечислить все группы в каждом домене и рекурсивно проверить членство для желаемого пользователя.

У меня нет доступа к системе, присоединенной к домену, но код PowerShell должен выглядеть примерно так. Обратите внимание, что Get-ADGroup имеет максимальные пределы результатов, которые, возможно, потребуется настроить для вашей среды.

Import-Module ActiveDirectory
$AllDomainGroups = Get-ADGroup -Server DomainController -LdapFilter "(sAMAccountName=*)"
$AllDomainGroups | %{ [string[]]$MemberList = Get-ADGroupMember $_ -Recursive ; if($MemberList.Contains("SomeUser")){ Write-Host "$_`tTRUE" } else { Write-Host "$_`tFALSE" } } 
2
ответ дан 5 December 2019 в 21:50

Пробовали ли вы использовать https://technet.microsoft.com/en-us/library/cc732952.aspx DSQuery. Если я правильно понял ваш вопрос, этот здесь должен помочь.

1
ответ дан 5 December 2019 в 21:50

Боже мой, все сценарии выше.Что не так с "whoami / all "? Предоставьте вам всю запрашиваемую информацию, за исключением того, что уже было указано кем-то выше, что пользователь принадлежит только к одному домену.

0
ответ дан 5 December 2019 в 21:50

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

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

Вы можете изменить это, чтобы принимать входные данные или проходить через набор доменов (если у вас есть доверительные отношения между лесами)

Import-Module ActiveDirectory

#Set Name
$Name = "Nick Young"

# Create Password
$password = "password" | ConvertTo-SecureString -asPlainText -Force

# Set Username
$username = "domain\username"

# Create Credential
$credential = New-Object System.Management.Automation.PSCredential($username,$password)

$Server = "server.fqdn.com"

$Domain1Account = @(Get-ADUser -Server $Server -Credential $credential -Filter {Name -eq $Name})

# SHow Message
Write-Host "Domain 1 Account" -forgroundcolor Yellow

# Display Info
if( $Domain1Account.count -lt 1 )
{
   echo "No Account"
}
else
{
   $Domain1Account | FT Name,UserPrincipalName
   $Domain1Account | Get-ADPrincipalGroupMembership -Server $Server | FT Name,distinguishedName
}
3
ответ дан 5 December 2019 в 21:50

Теги

Похожие вопросы