在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
如果你安装 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中显示的内容),那么你可以用 "显示名称 "来代替 "显示名称"。name
与 displayName
. 它们通常是相同的值,但也可以是不同的。
要以JSON字符串的形式呈现,可以使用 ConvertTo-Json
:
Get-ADGroup -Filter "Name -eq 'YourGroupName'" |
Get-ADGroupMember -Recursive |
Select -Expand Name |
ConvertTo-Json