powershell - 检查多个用户并排除重复用户并添加计数

时间:2017-09-19 02:28:58

标签: powershell powershell-v2.0 powershell-v3.0

我的任务是创建一个可以执行以下任务的脚本。示例:我们有一个Domain ABC。

有4个安全组,名为A,B,C和D.

彼得是A和B集团的成员。 David是B和C组的成员。 约翰是A组的成员。 B组也是A组的成员。

我们想要查找A,B组中的用户总数。已经在组中的那些用户将被排除在计数中,这意味着排除重复用户数。基于上述,该脚本将显示A&的总数。 B = 3个用户而不是5个用户。我尝试使用一个脚本来计算A和B组中的用户,并且A和B组中也存在任何组。如果John驻留在A和B中,则脚本将只添加1个计数。此外,如果David在B组但不在A组中,则会增加1个计数。

在修改代码后,

编辑 '帮忙,没有错误。但是显示的结果是空的。

$groups = $A_group, $B_Group
$gm     = @()
foreach ($group in $groups) {
    $gm += Get-ADGroupMember $group |
           where {$_.objectclass -eq 'user'} |
           select SamAccountName
}
($gm.samaccountname | Select -Unique).Count
Write-Output $total = ($gm.samaccountname | Select -Unique).Count

1 个答案:

答案 0 :(得分:0)

由于存在嵌套组[组内的组],因此您唯一缺少的是-recursive的{​​{1}}参数。这将使用户也可以获得嵌套ADGroup B中的用户,而不仅仅是返回ADGroup B名称。

将此行更改为:

Get-ADGroupMember

我不知道最后一行是做什么的。[看似错误和不必要]以下行足以让你得到总数。

$gm += Get-ADGroupMember $group -Recursive | where objectclass -eq 'user' | select SamAccountName