我想得到的所有用户的电子邮件地址是间接在一个网络,在该网络有组和组成员有时组,有时用户(我需要在所有组和子组的所有用户),所以我写下面的脚本
$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在该目录,但我想要组成员和嵌套组成员。有人可以解决我的问题,提前感谢
3条答案
按热度按时间46scxncf1#
您可以将所有用户存储在阵列中,然后过滤掉重复的用户
字符串
zsohkypk2#
您可以使用
Hashset<T>
来消除重复输出:字符串
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/
当然,我知道编码部分是这里的问题,但是.我认为你正在收集的数据,如果它看起来像这样:
字符串
如果你把它显示在数据透视表或power bi中,它看起来会更好,也更容易使用。
您可以发表声明:
再一次,请不要因为pivot/bi而责怪我,我知道编码是问题所在。