【问题标题】:How to filter out sub groups in DSQUERY?如何过滤掉 DSQUERY 中的子组?
【发布时间】:2020-05-25 14:28:34
【问题描述】:

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

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

从这里https://michlstechblog.info/blog/windows-get-all-groups-a-user-is-memberof-by-dsquerydsget-recursive/

但它包括子组。有没有办法可以过滤它以便只保留用户?这个 dsquery 做了类似的事情,但我不知道如何将它与上述查询联系起来。

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

谢谢

编辑:

假设我有一个组YourGroupName,它有子组YourGroupNameAYourGroupNameB。然后这些子组有一些用户User1(YourGroupNameA 组)、User2(YourGroupNameB 组)、User3(YourGroupNameB 组)。

上面的第一个查询让我明白了

YourGroupNameA
YourGroupNameB
User1
User2
User2

但是我想这样得到它

User1
User2
User2

【问题讨论】:

  • 观察:您是否有特殊原因从其他网站获取了所有信息,然后向我们而不是该信息的作者提出问题?在您链接的页面底部,有一个“留下回复”表单,这肯定是您的第一个停靠点!
  • 无论如何我都做了,但考虑到没有其他帖子,他们不会回复..
  • 您的问题肯定应该作为评论出现在页面上!因此我的观察。您能否编辑您的问题以包括您当前获得的输出示例,以及根据您的要求过滤后您希望它的示例?谢谢。
  • 好的,我添加了一个例子
  • omaga,这不是一个非常有用的编辑,我们应该如何过滤那些组成的字符串,你绝对没有给我们提供关于在 DSQuery 之外过滤它们的确切信息。如果问题仍然存在,您问的是如何使用特定的命令/实用程序,而不是如何使用 [batch-file],例如。关于软件的问题确实最适合超级用户,而不是 StackOverflow。

标签: batch-file active-directory dsquery


【解决方案1】:

如果你安装RSAT,你可以使用the 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

【讨论】:

  • @omega 是的。 DL 仍然只是 AD 中的组。
  • 对于 DL,它适用于 SamAccountName,我怎样才能让它过滤名称?
  • 谢谢。有没有办法将其格式化为 JSON 对象数组?
  • 只需通过管道将其输入ConvertTo-Json。但是您可能希望将-Expand 添加到Select,以便将数据显示为字符串数组而不是对象数组。 (我更新了我的答案以使用-Expand
  • 字符串数组和对象数组有什么区别?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多