快速查询广告中的大型团体

时间:2018-10-08 04:52:25

标签: powershell active-directory ldap active-directory-group

我想找到一种使用Powershell识别大型AD组(例如,超过5000个用户)的更有效方法。不需要列出成员,因为我想从其他过程中排除这些组。

很显然,我可以按以下方式使用Get-ADGroup,但是如果有更有效的方法(例如,使用LDAP过滤器等),那将会很有帮助。

(Get-ADGroup "Group" -Properties members).members.count | where {$_ -lt 5000}

出于实际目的,我正在查询成千上万个组的成员,并且我想在初始运行中排除较大的组(因为主要过程在大型组上占用大量内存)。

1 个答案:

答案 0 :(得分:0)

我没有确切的答案。但是,无论如何,您都要求DC告诉您每个成员的姓名。这将花费很多时间。 get-adgroup的括号要求查询每个成员并将其保存在本地ram中。然后,您告诉它获取成员的方法。因此,它重新列出了它。然后得到计数。

也许您这样做了。它会并行运行,而不是重复两次。因此,这可以节省20-30%的时间。

 Get-ADGroup "Group" -Properties members | select -ExpandProperty members | measure | where count -lt 5000

这是一个自动执行此操作的示例脚本...(我更改了ldap过滤器)

Get-ADGroup -filter * | select -expand name | foreach { 
    $group = $_
    if (Get-ADGroup {name -eq $group} -Properties members | select -ExpandProperty members | measure | where count -lt 5000){
        $countedGroups += $group
    }
    $countedGroups
}