计算嵌套在其他安全组中的安全组

时间:2019-06-13 13:58:40

标签: powershell active-directory

我正在尝试了解公司安全组嵌套的范围。我们有很多组嵌套在其他组中,这导致了安全令牌大小的问题(IE将用户X添加到组Y中会使它们的组成员身份增加350多个)。

我想生成一个报告,列出所有安全组(不包括通讯组)并计算递归组成员总数。

Quest Tools可以运行按需报告,而不会发出"(get-qadgroup "GroupHere").AllMemberOf.count"。我在将所有内容提取到报告中遇到问题。这就是我正在尝试的。

Get-ADGroup -filter {groupCategory -eq 'Security'} | 
Select SamAccountName |
ForEach-Object { (get-qadgroup $_.SamAccountName).AllMemberOf.count |
Export-csv -path "C:\_Reports\Security Group Nesting Numbers.csv" -NoTypeInformation -append
}

“-append”后面的逻辑是避免循环重写最高值。我不是100%肯定有必要。

Get-ADGroup运行正常。选择工作正常。 ForEach确实返回数字列表。我认为它们是正确的。我主要在导出带有关联的AllMemberOf.Count的SamAccountName时遇到麻烦。

1 个答案:

答案 0 :(得分:0)

您可以使用类似这样的内容:

#Create array to hold all groups
$groups = @()
#Run through groups
Get-ADGroup -Filter {groupCategory -eq 'Security'} | Select-Object -ExpandProperty SamAccountName | ForEach-Object {
    #Get current group
    $currentGroup = Get-ADGroup $_
    #Create new custom object
    $group = New-Object System.Object
    #Add group info to custom object
    $group | Add-Member -MemberType NoteProperty -Name "SamAccountName" -Value $currentGroup.SamAccountName
    $group | Add-Member -MemberType NoteProperty -Name "Count" -Value $currentGroup.AllMemberOf.Count
    #Add custom object to array
    $groups += $group
}
#Output array to CSV
$groups | Export-Csv -NoTypeInformation -Path C:\test.csv

CSV文件中的输出如下所示:

SamAccountName         Count
Group1                 2
Group2                 3