列出组成员的简单脚本



我对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

[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

来自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://$_"}

最新更新