我正在尝试让所有用户都是成员的组,甚至是嵌套的(重复),在我正在使用的Powershell中:
(Get-ADUser <username> -Properties MemberOf | Select-Object MemberOf).MemberOf
但它只返回用户是“直接”成员的组,就像使用AD用户控制台时所获得的那样。我所有组的单个列表非常有用,例如“gpresult -r”的输出,其中显示用户所属的所有组。
有没有办法从任何AD用户那里获取它? (不需要专门用于Powershell,也许是我还不知道的另一种工具)
答案 0 :(得分:21)
您可以使用LDAP_MATCHING_RULE_IN_CHAIN:
Get-ADGroup -LDAPFilter "(member:1.2.840.113556.1.4.1941:=CN=User,CN=USers,DC=x)"
您可以在任何可以使用LDAP过滤器的地方使用它。
示例:强>
$username = 'myUsername'
$dn = (Get-ADUser $username).DistinguishedName
Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $dn) | select -expand Name | sort Name
答案 1 :(得分:2)
或者,您可以使用constructed attribute tokenGroups和基本范围的查询:
$tokenGroups = Get-ADUser -SearchScope Base -SearchBase '<account-distinguishedName>' `
-LDAPFilter '(objectClass=user)' -Properties tokenGroups | Select-Object `
-ExpandProperty tokenGroups | Select-Object -ExpandProperty Value