여러 그룹의 활성화된 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

관련 정보