啟用多個群組的 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

相關內容