带-recursive的Get-ADGroup无法正常工作?

时间:2017-07-28 05:05:56

标签: powershell active-directory

我正在使用get-adgroupmember命令获取AD组中的所有用户。 -recursive正在帮助我从子组中获取成员(如果在父组中也是如此)。

但是,get-adgroupmember的上限仅为5000个条目。

要解决这个问题,如果我使用:

Get-ADGroup -Identity "DEPT_120_SA" -server "A" -Properties * | select-object -expandproperty members |get-aduser

这不起作用,因为我的父AD有子AD并且-recursive不接受get-adgroup

错误:

  

Get-ADGroup:找不到与参数名称匹配的参数   “递归”。在线:2字符:79   + Get-ADGroup -Identity“DEPT_120_SA”-server“mhf.mhc”-Properties * -recursive<<<< | select-object -expandproperty成员       + CategoryInfo:InvalidArgument:(:) [Get-ADGroup],ParameterBindingException       + FullyQualifiedErrorId:NamedParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.GetADGroup

我的目标是显示用户名和他们的邮件iDS,这对我有用:

Get-ADGroupMember -server $domain -identity $s -Recursive -ErrorAction Stop | Get-AdUser -Properties mail -ErrorAction Stop | select sAmAccountName, Mail

任何解决方法? (我愿意写一个递归函数来获取大型组,但必须有一个更短更直接的方法)

1 个答案:

答案 0 :(得分:0)

5000限制仅适用于Get-ADGroupMembers而不是Get-ADUsers,因此我们可以使用LDAP_MATCHING_RULE_IN_CHAIN匹配规则(OID 1.2.840.113556.1.4.1941)

例如:

Get-AdUser -LdapFilter "(memberOf:1.2.840.113556.1.4.1941:=cn=group,cn=users,DC=ad,DC=local)"

其中cn=group,cn=users,DC=ad,DC=local是您希望成员所在的组的专有名称。