获取活动目录组的成员数?

时间:2014-09-02 12:15:22

标签: powershell

是否可以根据OU获取属于特定组的成员数?当我运行下面的代码时,如果只有1个OU值为3,则每个OU的值为3,其余值应为0.它运行Get-ADGroupMember -Identity“Test_Group”。计算整个活动目录结构而不是仅针对每个OU ??

import-module activedirectory
foreach ($ou in  Get-ADOrganizationalUnit  -filter * -SearchScope 1){

 $computers = 0 + (get-adcomputer -filter * -searchbase $ou.distinguishedname).count    


 $ou | add-member -membertype noteproperty -name Computers -value $computers -force 


 Foreach ($Member in  $ou){

 (Get-ADGroupMember -Identity “Test_Group”).count 

 }

 $ou | select name,computers 

}

2 个答案:

答案 0 :(得分:3)

我对你的问题的解释是,对于特定的AD组,你正在寻找基于OU或容器的成员数。

Get-ADGroupMember -Identity "insert_your_group" -Recursive | 
        Where-Object{$_.objectClass -eq "User"} |
        Get-ADUser -Properties canonicalname | 
        Select-Object @{Name='Container';Expression={$_.canonicalname | split-path -parent}} |
        Group-Object container |
        Select Name,Count

逐行打破这个

  1. 抓住特定群组的所有成员,包括其他群组的成员。
  2. 确保我们只处理用户而不是自己。我们已经拥有-Recursive中的所有用户,因此可以忽略它们。
  3. 使用Get-ADUser调用获取所有用户对象。我们需要canonicalname因为我们获取了父容器的信息
  4. 这是有趣的部分。使用canonicalname将其拆分(就像您在目录中一样),然后只取-parent部分。
  5. 将对象分组以获取您要查找的计数
  6. 使用选择参数简化输出。
  7. <强>输出

    Name                                                                    Count
    ----                                                                    -----
    Domain.Local\OU\SubOU                                                   8
    Domain.Local\OU\SubOU2                                                  8
    Domain.Local\OU\SubOU5                                                  2
    

答案 1 :(得分:0)

(Get-ADGroupMember'AD-groupname'-Recursive).count