powershell 获取组和子组中的AD用户(不重复)

relj7zay  于 11个月前  发布在  Shell
关注(0)|答案(3)|浏览(111)

我想得到的所有用户的电子邮件地址是间接在一个网络,在该网络有组和组成员有时组,有时用户(我需要在所有组和子组的所有用户),所以我写下面的脚本

$groups = Get-ADGroup -Filter * -SearchBase 'OU=someOU,DC=someDomain,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=someOU,DC=someDomain,DC=com'))"


它没有显示任何东西,也尝试了这个

Get-ADobject -Filter * -SearchBase 'OU=someOU,DC=someDomain,DC=com' -SearchScope Subtree | Select-Object name


这只显示了qroups在该目录,但我想要组成员和嵌套组成员。有人可以解决我的问题,提前感谢

46scxncf

46scxncf1#

您可以将所有用户存储在阵列中,然后过滤掉重复的用户

$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

字符串

zsohkypk

zsohkypk2#

您可以使用Hashset<T>来消除重复输出:

$hash = [System.Collections.Generic.HashSet[guid]]::new()
Get-ADGroup -Filter * -SearchBase 'OU=someOU,DC=someDomain,DC=com' | ForEach-Object {
    foreach ($user in Get-ADuser -LDAPFilter "(memberOf:1.2.840.113556.1.4.1941:=$($_.DistinguishedName))") {
        if ($hash.Add($user.ObjectGuid)) {
            $user
        }
    }
}

字符串

vatpfxk5

vatpfxk53#

重复的用户通常不是问题,因为一个用户可以是多个组的成员,你也需要所有的组、子组和用户。
但是要编写代码,以下命令可能是一个不错的选择:

  • 第一个月
  • Sort-Object -Unique
  • Get-Unique
  • [HashSet<T>]
  • Compare-Object $obj[0] $obj[1] -Property X
  • [Linq.Enumerable]::Distinct

测量值:x1c 0d1x

请注意:我描述了可能的解决方案,但不是最佳解决方案。
参考号https://ridicurious.com/2018/04/13/unique-items-in-powershell/

当然,我知道编码部分是这里的问题,但是.我认为你正在收集的数据,如果它看起来像这样:

Group |Member| Email
g1    | u1   | [email protected]
g2    | g1   | [email protected]
g2    | u2   | [email protected]
g2    | u3   | [email protected]

字符串
如果你把它显示在数据透视表或power bi中,它看起来会更好,也更容易使用。
您可以发表声明:

  • 谁是哪个团体的成员
  • 给定用户属于哪个组

再一次,请不要因为pivot/bi而责怪我,我知道编码是问题所在。

相关问题