我正在尝试了解公司安全组嵌套的范围。我们有很多组嵌套在其他组中,这导致了安全令牌大小的问题(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时遇到麻烦。
答案 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