我在 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 文件中。
谈到像这样的分析时,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