PowerShell脚本,用于返回多个安全组的成员

Chr*_*ris 6 powershell active-directory

我需要使用PowerShell返回多个安全组的所有成员.很方便,所有小组都以相同的字母开头.

我可以使用以下代码返回所有相关安全组的列表:

Get-ADGroup -filter 'Name -like"ABC*"' | Select-Object Name
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用以下代码返回特定安全组的成员资格列表:

Get-ADGroupMember "Security Group Name" -recursive | Select-Object Name
Run Code Online (Sandbox Code Playgroud)

然而,我似乎无法把它们放在一起,虽然我认为我所追求的应该是这样的(请随意纠正我,这就是为什么我在这里!):

$Groups = Get-ADGroup -filter 'Name -like"ABC*"' | Select-Object Name
ForEach ($Group in $Groups) {Get-ADGroupMember -$Group -recursive | Select-Object Name
Run Code Online (Sandbox Code Playgroud)

关于如何正确构建的任何想法将不胜感激!

谢谢,

克里斯

小智 8

这是更清洁,将放入csv.

Import-Module ActiveDirectory

$Groups = (Get-AdGroup -filter * | Where {$_.name -like "**"} | select name -expandproperty name)


$Table = @()

$Record = [ordered]@{
"Group Name" = ""
"Name" = ""
"Username" = ""
}



Foreach ($Group in $Groups)
{

$Arrayofmembers = Get-ADGroupMember -identity $Group | select name,samaccountname

foreach ($Member in $Arrayofmembers)
{
$Record."Group Name" = $Group
$Record."Name" = $Member.name
$Record."UserName" = $Member.samaccountname
$objRecord = New-Object PSObject -property $Record
$Table += $objrecord

}

}

$Table | export-csv "C:\temp\SecurityGroups.csv" -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)


And*_*Ful 4

如果您不关心用户所在的组,而只想要一个大的用户列表 - 这可以完成工作:

$Groups = Get-ADGroup -Filter {Name -like "AB*"}

$rtn = @(); ForEach ($Group in $Groups) {
    $rtn += (Get-ADGroupMember -Identity "$($Group.Name)" -Recursive)
}
Run Code Online (Sandbox Code Playgroud)

然后结果:

$rtn | ft -autosize
Run Code Online (Sandbox Code Playgroud)