如何在DSQUERY中过滤出子组?

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

在DSQUERY中查找AD对象时,我想找到一个DL(分发列表)或AD安全组,并找到它的所有用户(甚至在子组中),然后过滤掉子组。到目前为止,我的方法是这样的

dsquery group -samid YourGroupName | dsget group -members -expand

从此 https:/michlstechblog.infoblogwindows-get-all-groups-a-user-is-memberof-by-dsquerydsget-recursive。

但它包括子组。有什么办法可以过滤,让它只剩下用户?这个dsquery可以做到这一点,但我不知道如何将其与上面的查询结合起来。

 | dsquery * -filter "(&(objectcategory=person)(objectclass=user))"

谢谢,谢谢

EDIT:

让我们说我有一个组 YourGroupName,其中有子群 YourGroupNameA, YourGroupNameB. 那么这些子群有一些用户 User1 (YourGroupNameA组)。User2 (YourGroupNameB组)。User3 (YourGroupNameB组)。

上面的第一个查询让我得到

YourGroupNameA
YourGroupNameB
User1
User2
User2

然而,我想让它像这样

User1
User2
User2
batch-file active-directory dsquery
1个回答
1
投票

如果你安装 RSAT,您可以使用 AD PowerShell cmdlets. 要获得每个成员的名字,可以使用 Get-ADGroupMember 以其 -Recursive 参数。

Get-ADGroupMember YourGroupName -Recursive | Select Name

这将不包括嵌套组的名称。

要通过组名而不是 sAMAccountName,您可以使用 Get-ADGroup 并管入 Get-ADGroupMember:

Get-ADGroup -Filter "Name -eq 'YourGroupName'" |
    Get-ADGroupMember -Recursive |
    Select -Expand Name

如果你喜欢使用LDAP过滤器(反正它在后台也会被转换),你可以使用 -LDAPFilter 参数。

Get-ADGroup -LDAPFilter "(name=YourGroupName)" |
    Get-ADGroupMember -Recursive |
    Select -Expand Name

如果你需要通过显示名称来搜索(例如Outlook中显示的内容),那么你可以用 "显示名称 "来代替 "显示名称"。namedisplayName. 它们通常是相同的值,但也可以是不同的。

要以JSON字符串的形式呈现,可以使用 ConvertTo-Json:

Get-ADGroup -Filter "Name -eq 'YourGroupName'" |
    Get-ADGroupMember -Recursive |
    Select -Expand Name |
    ConvertTo-Json
© www.soinside.com 2019 - 2024. All rights reserved.