寻找有关如何编写脚本的指导,该脚本将从 198 个 AD 组中拉出所有用户,将用户分组到他们所在的组。报告

问题描述 投票:0回答:1

我在 Active Directory 的一个 OU 中有 198 个组,我需要获取这些组的所有成员,然后输出按他们所在的组分组的用户。Exp:

GP-1
  Tim
  Karen

GP-2
  Tom
  Harry
  Tim

一个用户可以在多个组中。

$Groups = Get-AdGroup -SearchBase "OU=1,OU=2,OU=Groups,OU=3,DC=One,DC=Two" -Filter * | Select-Object -Property Name

## For Each loop to get members of each group
$Array = foreach ($Group in $Groups) {
## Define the search criteria for AD Search and capture in variable $Array
Get-ADGroupMember -Identity $Group | Get-ADUser -Properties SamAccountName | 
    Select-Object @{Name = 'SamAccountName'; Expression = {$_.SamAccountName}},
                  @{Name = 'GroupName'; Expression = {$Group}}

}

我期待看到每个组中的每个成员/用户按组分开。然后,我打算将其输出到 CSV 文件中。

powershell active-directory powershell-3.0
1个回答
0
投票

谈到像这样的分析时,PsCustomObject 是我选择的媒介。 将所有需要的组放入 $Groups 变量后,您可以执行以下操作:

$Table = @()
foreach ($Group in $Groups){
    $GroupMembers = Get-ADGroupMember -Identity $Group
    $Table += [pscustomobject] @{
        Group = $Group.Name
        Members = $GroupMembers.SamAccountName -join ','
    }
}

这将为您提供一个包含两列的表格。 第一列包含组名,第二列包含用逗号分隔的 samaccountnames。然后你可以简单地导出它

$Table | Export-CSV -Path $env:\TEMP\list.csv -Delimiter ';' -NoTypeInformation
© www.soinside.com 2019 - 2024. All rights reserved.