我想获取间接位于一个组织单位中的所有用户的电子邮件地址,在该组织单位中有组,组成员有时是组,有时是用户(我需要所有组和子组中的所有用户) 所以我写了以下脚本
$groups = Get-ADGroup -Filter * -SearchBase OU=ZimbraImported,OU=DistributionLists,OU=Exchange,OU=Applications,DC=ad,DC=spreadgroup,DC=com"
foreach ($group in $groups)
{
$groupDN = (Get-ADGroup $group).distinguishedName
Get-ADuser -LDAPFilter "(memberOf:1.2.840.113556.1.4.1941:=$groupDN)" |ft
}
问题是有些用户是不同组的成员,并且它多次显示他们。 我也尝试过其他方法
Get-ADobject -LDAPFilter "(&(objectClass=person)(objectClass=user)(memberof:1.2.840.113556.1.4.1941:=OU=ZimbraImported,OU=DistributionLists,OU=Exchange,OU=Applications,DC=ad,DC=spreadgroup,DC=com))"
它没有显示任何东西, 也试过这个
Get-ADobject -Filter * -SearchBase “ OU=ZimbraImported,OU=DistributionLists,OU=Exchange,OU=Applications,DC=ad,DC=spreadgroup,DC=com” -SearchScope Subtree | Select-Object name
仅显示该 OU 中的 qgroup,但我需要组成员和嵌套组成员。 有人可以解决我的问题吗?提前致谢
您可以将所有用户存储在数组中,然后过滤掉重复项
$Users = @()
$groups = Get-ADGroup -Filter * -SearchBase OU=ZimbraImported,OU=DistributionLists,OU=Exchange,OU=Applications,DC=ad,DC=spreadgroup,DC=com"
foreach ($group in $groups) {
$groupDN = (Get-ADGroup $group).distinguishedName
$Users += Get-ADuser -LDAPFilter "(memberOf:1.2.840.113556.1.4.1941:=$groupDN)"
}
$Users = $Users | Sort-Object samaccountname| Select-Object -Unique