这与 Windows 7 和 Windows Server 2008 R2 有关,但可能也适用于其他版本。
问题 1:如何最好地从 CLI 中找出用户所属的所有域(这可能并不简单,但可以以某种方式完成)?
问题2:如何从用户当前未登录的域中找出用户所属的所有组(假设用户知道所需的凭据)?
答案1
正如 @joeqwerty 指出的那样,一个用户只能驻留在一个域中。您可能感兴趣的是如何在各个域/林之间配置信任。我为此使用的命令行工具是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
以下代码可以查找用户是否在另一个域控制器上拥有帐户,然后显示该用户所属的所有组。如果您对每个域重复此代码,它可能会满足您的需求。
凭证是那些对您正在查看的 DC 具有权限的用户的凭证,服务器是您要检查的域的 DC。名称必须是用户的名称(首字母和姓氏),与帐户上显示的完全一致。
您可以修改它以获取输入或循环遍历一组域(如果您有林信任)
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
您是否尝试过使用https://technet.microsoft.com/en-us/library/cc732952.aspxDSQuery。如果我正确回答了你的问题,那么这个应该可以帮到你。
答案4
天哪,上面的所有脚本。有什么问题“whoami/全部“?提供您要求的所有信息,除了上面有人已经指出的,一个用户只属于一个域。