【问题标题】:Simple script to list members of a group列出组成员的简单脚本
【发布时间】:2020-10-03 18:23:24
【问题描述】:

我对 Powershell 和 AD 完全陌生,因此您的解释可能需要明确一些。

我可以列出我域中的所有用户。现在我试图只列出属于Power Users 组的用户。我认为我的过滤器是错误的,因为我什么也没得到。我读到用memberOf 过滤也不是一个好主意,对吗?

...
$DEntry = New-Object System.DirectoryServices.DirectoryEntry
$DSearcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]$LDAPPPath)
$DSearcher.SearchRoot = $DEntry 
$DSearcher.filter = "(&(objectCategory=person) (memberOf=CN=Power Users))"
$R = $DSearcher.FindAll()

# Print R ...

可能存在 sintaxis 错误,但这也不起作用:

$DSearcher.filter = "memberOf=CN=Users"

我也试过全名:

$DSearcher.filter = "memberOf=CN=Users,DC=example,DC=com"

格式来源:https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx

【问题讨论】:

  • 您有一个名为“超级用户”的组吗?这通常是 LOCAL 组,而不是 AD 组。对于本地组,您可以使用Get-LocalGroupMember -Group 'Power Users'
  • 您没有使用 AD powershell 模块的任何具体原因?
  • 是的,Power UsersUsers 存在。我尝试使用Users,因为它没有空格,以防万一出现语法错误。 AD PS 模块未安装/可用。

标签: powershell active-directory


【解决方案1】:

[adsisearcher] 类型加速器适用于此

#LDAP Query
$search = [adsisearcher]"(&(objectCategory=person)(objectClass=User)(memberOf=CN=Power Users,OU=Groups,DC=example,DC=com))"
$search.FindAll()

另外,更容易记住,你可以

$samAccountName = "Power Users"
$group = ([adsisearcher]"samAccountName=$samAccountName").FindAll()
$group.Properties.member

【讨论】:

    【解决方案2】:

    来自https://social.technet.microsoft.com/wiki/contents/articles/4231.working-with-active-directory-using-powershell-adsi-adapter.aspx

    $Group = [ADSI]"LDAP://cn=Domain Admins,cn=Users,dc=Contoso,dc=Com"
    $Members = $Group.Member | ForEach-Object {[ADSI]"LDAP://$_"}
    

    【讨论】:

    • 由于某种原因,它需要很长时间才能完成,我没有得到结果......
    猜你喜欢
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2014-03-01
    • 1970-01-01
    相关资源
    最近更新 更多