已启用多个组的 AD 组成员

已启用多个组的 AD 组成员

我试图仅获取多个组中的已启用成员,但不确定如何以我想要的格式实现这一点。我当前的脚本如下。

$GroupList = @('GroupA','GroupB'
 )

$Groupusers  = @()

foreach ($Groups in $GroupList)
{

    $Groupusers += Get-ADGroupMember -Identity $Groups | select @{Name="Groups";Expression={$Groups}},name
}

$Groupusers | Export-Csv -Path "C:\Users\Me\Documents\users.csv" -NoTypeInformation -Encoding Unicode

上述脚本可以工作并格式化我想要的输出,但这也包括残疾用户。

输出:

团队名字


组A 用户A
组B 用户B

我尝试了以下脚本,它为我提供了所有启用的用户,但格式不像上面的脚本。


$groupname = @('GroupA', 'GroupB')

$Groupusers=@()


foreach ($group in $groupname)
{

    $Groupusers += Get-ADGroupMember -Identity $group | ? {$_.objectclass -eq "user"}
}

$result= @()

foreach ($activeusers in $Groupusers) 

{ 

$result += (Get-ADUser -Identity $activeusers | ? {$_.enabled -eq $true} | select Name, Enabled) 

}

$result 

我怎样才能实现上述输出,但仅限已启用的用户?谢谢。

答案1

如果您想保留第一个脚本的格式,这应该适合您。只需创建第二个数组以仅保存已启用的 $groupusers,然后将该子集写入输出文件。

$GroupList = @('GroupA','GroupB')

$Groupusers  = @()

foreach ($Groups in $GroupList)
{

    $Groupusers += Get-ADGroupMember -Identity $Groups | select @{Name="Groups";Expression={$Groups}},name  
    
}

$activeusers = @()
foreach ($user in $Groupusers)
{
$n = $user.name
$props = get-aduser -filter "name -eq '$n'" | select samaccountname, enabled
  if ($props.enabled)
  {

    $activeusers += $user
  }
}

$activeusers | Export-Csv -Path "C:\Users\Me\Documents\users.csv" -NoTypeInformation -Encoding Unicode

相关内容