使用 ADSI - Powershell 获取 AD 组成员

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

我无法使用 Active Directory 模块获取特定 AD 组中用户的 SamAccountName。我如何使用 ADSI 做到这一点?

我已经尝试过:

$Group = [ADSI]"LDAP://DN of the AD group"
$Group.Member | ForEach-Object {
    $Searcher = [adsisearcher]"(samAccountName=$_)"
    $searcher.FindOne().Properties
}

但我看到这条消息:

samAccountName 搜索过滤器无效。

我该怎么做?

powershell active-directory adsi
3个回答
1
投票

据我所知,有两种方法可以解决这个问题,但可能有一种更简单的方法。

一种是搜索

memberOf
属性具有该组的
DistinguishedName
的所有用户(这可能是不太麻烦的方法):

$group = 'CN=myGroup, OU=myOU, DC=myDomain'
$searcher = [adsisearcher]"(&(objectclass=user)(objectcategory=person)(memberof=$group))"
$members = foreach($member in $searcher.FindAll()) {
    $member.Properties.samaccountname
}

另一种方法是使用与您在问题中使用的相同的方法:

$group = 'CN=myGroup, OU=myOU, DC=myDomain'
$adsi = [adsi]"LDAP://$group"
$members = foreach($member in $adsi.member) {
    $isUser = [adsi]"LDAP://$member"
    if('person' -in $isUser.objectclass) {
        $isUser.samaccountname
    }
}

与上面的类似,但是使用

adsisearcher
,不确定在这种情况下哪个会更有效:

$members = foreach($member in $adsi.member) {
    $check = [adsisearcher]"(&(distinguishedname=$member)(objectclass=user)(objectcategory=person))"
    if($isUser = $check.FindOne()) {
        $isUser.Properties.samaccountname
    }
}

0
投票

我在自己的系统上运行了代码的修改版本,这样我就可以看到搜索字符串实际上是什么样子:

$Group = [ADSI]"LDAP://DN of the AD group"
$Group.Member | ForEach-Object {
    $searchKey = "(samAccountName=$_)"
    $searchKey
    $Searcher = [adsisearcher]$searchKey 
    # $searcher.FindOne().Properties
}

注意我让

$searchKey
来到控制台的那一点。当我这样做时,我看到带有 完整专有名称 的值,而不仅仅是
samAccountName
。基于这个结果,我更改了代码来查找该值而不是
samAccountName
,然后我看到了(大概)预期的结果:

$Group = [ADSI]"LDAP://DN of the AD group"
$Group.Member | ForEach-Object {
    $Searcher = [adsisearcher]"(distinguishedName=$_)"
    $searcher.FindOne().Properties
}

0
投票

这对我有用:

$group = 'CN=myGroup, OU=myOU, DC=myDomain'
$adsi = [adsi]"LDAP://$group"
foreach($member in $adsi.member) {
$isUser = [adsi]"LDAP://$member"
if('person' -in $isUser.objectclass) {
$isUser.samaccountname
}
}
© www.soinside.com 2019 - 2024. All rights reserved.