获取OU的组和子组内的AD用户(不重复)

问题描述 投票:0回答:1

我想获取间接位于一个组织单位中的所有用户的电子邮件地址,在该组织单位中有组,组成员有时是组,有时是用户(我需要所有组和子组中的所有用户) 所以我写了以下脚本

$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,但我需要组成员和嵌套组成员。 有人可以解决我的问题吗?提前致谢

powershell active-directory ldap get-aduser
1个回答
0
投票

您可以将所有用户存储在数组中,然后过滤掉重复项

$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
© www.soinside.com 2019 - 2024. All rights reserved.