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)
如果您不关心用户所在的组,而只想要一个大的用户列表 - 这可以完成工作:
$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)
| 归档时间: |
|
| 查看次数: |
115293 次 |
| 最近记录: |