为什么这个列出组成员的脚本不起作用?

为什么这个列出组成员的脚本不起作用?

我肯定做了一些愚蠢的事情,但我真不知道是什么。根据我的谷歌搜索,这个 Powershell 脚本应该列出域用户组的成员:

$root=([ADSI]"").distinguishedName
$group = [ADSI] ("LDAP://cn=Domain Users,cn=Users," + $root)
Write-Host $group.distinguishedName

Write-Host "Members:"
foreach ($member in $group.member) 
{ 
  $member
} 

但是当我运行它时我只得到输出:

CN=Domain Users,CN=Users,DC=mydomain,DC=local
Members:

因此,它找到了组,但没有列出成员。我在 Server 2003 和 Server 2008 上尝试过,但我不知道我的明显错误在哪里。请帮忙...

JR

答案1

我从未在 PowerShell 中这样做过,但我在 VBScript 中看到过同样的问题。

如果域用户是用户的主要组,则该用户不会显示为成员。尝试将您的主要组更改为其他组,然后再次运行脚本。

答案2

嗯。对我来说,它有效。您是将其作为脚本运行,还是以交互方式输入?

如果在交互式会话中按下回车键(或粘贴键)后出现提示>>,请再次按下回车键,看看是否得到了结果。

当然,假设你的组中确实有用户;)

答案3

奇怪,域用户组似乎没有成员属性。如果我查询域中的另一个组,我会得到属性。

我查看了 ADSI Edit 中的组,成员属性是空的。

我将进入 ADSI Edit 并检查域管理员组的成员属性,看看那里是否有任何条目。

至于为什么他们不在那里以及该团体如何获得成员资格,我不太清楚并且我自己也很好奇这些问题的答案。

答案4

这是 Powershell 1.0 还是 2.0?我在 Powershell 2.0 上运行它,也得到了空白输出。但是,在执行“$group | get-member”后,我看到有一个名为“MemberOf”的属性(仅“member”没有列出任何内容)。

在这种情况下,如果将最后一行更改为:

foreach ($member in $group.memberOf)
{
    $member
}

经过这样的改变,我得到了看起来像是期望的输出。

相关内容