我们的整个域有数千个分发组,而我可以使用此处引用的脚本: 如何获取 Exchange 2007 中所有通讯组列表及其成员的列表? 拉取所有分发组及其成员,筛选所有结果会非常困难。
我特别需要提取 a.(首选)OU 内的所有组(分发组和安全组)及其成员(此特定 OU 包含超过 100 个组)或 b. 所有匹配以 example* 开头的名称的组和成员
dsquery | dsget 看起来几乎可以达到这个目的,但是当我这样做时:
dsquery 组“OU=my-department,DC=blah,DC=blahblah,DC=com”-name * | dsget 组-成员(-expand)>> c:\my-department.txt
它只显示成员,而不显示他们属于哪个组。我需要的输出应该有:组名、成员和可能扩展的子组。
我仍在研究如何完成此操作,似乎我可以以某种方式使上面引用的脚本仅在 OU 内部搜索,但我对 powershell 不是很熟悉。
任何帮助都将不胜感激,谢谢。
答案1
虽然不太美观,但这个 PowerShell 应该可以做到,
Import-Module ActiveDirectory
"{0},{1}" -f "Group Name", "Member" | out-file outfile.csv
Get-ADGroup -filter * -SearchBase "ou=groups, dc=your, dc=domain" | ForEach-Object {
$group = Get-ADGroup $_.Name
foreach ($member in Get-ADGroupMember $group)
{
"{0},{1}" -f $group.Name,$member.Name | out-file outfile.csv -append
}
}
使用目标 OU 的路径更新 SearchBase,然后它就可以走了。