【问题标题】:List Active Directory group hierarchy列出 Active Directory 组层次结构
【发布时间】:2014-07-20 00:42:10
【问题描述】:

我正在寻找一个可以显示 Active Directory 组层次结构的脚本。

不幸的是简单的 Get-ADGroupMember $group - 递归只列出成员,而不是组。

例子:

Group1 是主要组 - 它有 3 个名为 GroupA、B、C 的子组。所以 GroupA,B,C 是 Group1 的成员。

GroupA 没有子组

GroupB 有 2 个名为 subGroup1,2 的子组

GroupC 有 1 个名为 subGroup3 的子组

subGroup1,2,3 没有子组

理想情况下,有这样的输出会很棒:

Level1 Level2 Level3   Level4
Group1 GroupA 
       GroupB subGroup1
              subGroup2
       GroupC subGroup3

当然我已经谷歌了,我找到了两个网站:

http://powershell.com/cs/forums/p/9588/15894.aspx

http://www.experts-exchange.com/Programming/Languages/Scripting/Powershell/Q_27346526.html

我理解它们的范围不大,在第一个链接中有简单的脚本。

function Get-GroupHierarchy ($searchGroup)
{
    import-module activedirectory
    $groupMember = get-adgroupmember $searchGroup | sort-object objectClass -descending
       foreach ($member in $groupMember)
        {Write-Host $member.objectclass,":", $member.name;
        if ($member.ObjectClass -eq "group")
            {Get-GroupHierarchy $member.name}}
} 

我在脚本前添加了$searchGroup = "Administrators",但脚本没有显示任何结果。如果我执行 Get-ADGroupMember,它有 3 个子组。可能我不知道如何使用函数。

如何使这些脚本工作或制作类似的东西?

【问题讨论】:

标签: powershell recursion hierarchy active-directory-group members


【解决方案1】:

要直接回答您关于如何使该脚本工作的问题,您可以这样调用该函数:

Get-GroupHierarchy "Administrators"

但是,如果您在论坛帖子中进一步阅读,有人确实注意到该函数存在问题...循环引用。鉴于此:

Group1    -GroupA    -GroupX
          -GroupB    -GroupY
                     -Group1

函数永远不会完成。它将获得 Group1 的成员,然后是 GroupA,然后是 GroupX。在 GroupX 之后,它不会再有任何嵌套组,因此它将向下移动到 GroupB,然后是 GroupY,然后是 Group1,它将再次从 GroupA 开始。它会循环,一遍又一遍。我从来没有尝试过,所以我不知道是否可以使用 AD 组来完成,但是如果您可以将组嵌套在嵌套在自身内部的组中,那么这会给您带来问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    相关资源
    最近更新 更多