如何获取广告组中嵌套组的列表

时间:2019-07-16 09:27:53

标签: powershell active-directory

在PowerShell脚本中,我需要在一个组中获取所有嵌套的组。输出可能是一组组名(不需要任何级别或成员)。

我用Google搜索了一些AD脚本,但其中包括成员。 Get-ADGroupMember方法在成千上万的用户中也出现大小结果错误。

1 个答案:

答案 0 :(得分:1)

您可以使用自定义功能来做到这一点:

Function Get-ADNestedGroups {
    param($Members)

    foreach ($member in $Members) {
        $out = Get-ADGroup -filter "DistinguishedName -eq '$member'" -properties members
        $out | Select-Object Name
        Get-ADNestedGroups -Members $out.Members
    }
}

$group = "Group Name"
$members = (Get-ADGroup -Identity $group -Properties Members).Members
Get-ADNestedGroups $members

只需在$group变量中提供您的起始或顶级组名称。然后执行代码。这将依赖于Members命令的Get-ADGroup属性结果,并将这些成员递归地输送到Get-ADGroup中。它配置为仅输出每个找到的组的Name属性。

免责声明:该代码效率不高。通过提供有关目录结构,命名约定等的更多信息,它可以变得更加高效。问题在于,如果不查询该对象,就无法知道用户和组之间的区别。如果所有组都在称为组的更高级别的OU中,那么我们可以过滤掉该容器的子级以外的所有内容,然后只查找结果对象。